我对环回游戏相对较新。我怎样才能让观察者工作?
例如,无论何时更改用户信息或创建用户,我都希望观察到某些内容。
由于
//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中?
答案 0 :(得分:2)
只是为了回答这个问题(见上面的评论):
一般来说,你所做的事情大多是正确的。您希望将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);
});
}
});
}
});