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);
});
}
});
}
});
我对环回游戏比较陌生。我怎样才能让观察员工作?
例如,我希望在更改用户信息或创建用户时观察一些东西。
谢谢
//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);
});
}
});
}
});