javascript - 是否可以删除操作 Hook ?

标签 javascript node.js model loopbackjs strongloop

假设我已经绑定(bind)了一个操作 Hook 用于测试目的,如下所示:

it('verification link confirms mail',function(done){
    var client = app.models.client;
    client.observe('after save', function(ctx, next) {
        if (!ctx.instance.verificationToken){
            next();
            return;
        }
        var link = '/api/clients/confirm?uid=' + ctx.instance.id + '&redirect=/verified&token=' + ctx.instance.verificationToken;
        json('get', link)
            .send()
            .expect(200, function(){
                client.findById(ctx.instance.id, function(err, inst){
                    assert(inst.emailVerified === true);
                    done();
                });
            });
        next();
    });
    client.create({username:'test',email : 'a@b.com', password : 'test'}, function(err){
        if(err) {
            assert.fail('could not create client instance','',err);
        }
    });

});

问题是创建 client 实例的所有后续测试都有此操作 Hook 。有办法解除绑定(bind)吗?

最佳答案

我不认为环回提供了一种安全地取消观察操作钩子(Hook)的方法。我认为他们使用 Object.observe 方法,该方法在某些 javaScript 实现中已经过时了。我建议你尝试这样的事情:

client.unobserve('after save', function (ctx, next) {
        //do something after the change is un-observed in the object
});

我希望您发现这很有用。

您可以阅读更详细的内容here这是一个过时的功能,所以要小心

关于javascript - 是否可以删除操作 Hook ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36557234/

相关文章:

javascript - 使用 UI 自动化检测设备类型

javascript - 聊天室的可靠计时器

php - Laravel 非静态方法问题

node.js - 将静态值创建到 Sequelize 模型中(没有迁移经验)

javascript - 是否可以在 CouchDB 验证功能中向文档添加字段?

javascript - 从 Firefox 插件打开 TCP 套接字

node.js - 如何调试从 Jade 打印一个对象

node.js - 通过 nodeJs 从 Cloudant 数据库返回所有文档

django - 如何通过django-taggit中的模型访问自定义

javascript - 无法获取适用于 setTimeout 的随机数