Loopback:将观察者放在哪里?

Loopback: Where does one put observers?

我对环回游戏比较陌生。我怎样才能让观察员工作?

例如,我希望在更改用户信息或创建用户时观察一些东西。

谢谢

//this observer will be activated whenever the user is edited or created
User.observe('after save', function(ctx, next) {
    var theUserObject = ctx.instance;
    if(ctx.isNewInstance){
        anotherModel.create(theUserObject.name,theUserObject.ID);
    }else{
        anotherModel.update(theUserObject.name,theUserObject.ID);
    }
    next();
});

这是ctx的正确用户吗?这段代码应该放在哪里? User.js?

只是为了回答这个问题(见上面的评论):

总的来说,你所做的大部分是正确的。您想将 operation hooks 放入 common/models/my-model.js 文件中,但是上下文对象 (ctx) 将根据挂钩而改变(阅读上面的链接文档)。

在您的情况下,要创建一个新模型,您需要访问当前模型的 app 关闭,然后执行 create(),但请务必将您的 next()创建调用的回调中的回调:

//this observer will be activated whenever the user is edited or created
User.observe('after save', function(ctx, next) {
    var theUserObject = ctx.instance;
    if(ctx.isNewInstance){
        User.app.models.anotherModel.create({name: theUserObject.name, id: theUserObject.ID}, function(err, newInstance) {
            next(err);
        });
    } else {
        User.app.models.anotherModel.find({ /* some criteria */ }, function(err, instance) {
            if (err) { return next(err); }
            if (instance) {
                instance.updateAttributes({name: theUserObject.name, id: theUserObject.ID}, function(err) {
                    next(err);
                });
            }

        });
    }
});