2017-09-22 12 views
0

我有一个关于LoopBack操作挂钩的问题。LoopBack操作挂钩使用多个模型

凭借什么帮助表示here,我想以编程方式创建特权对象每当触发我公司模型的情况下“保存后”。这是为了在保存一个对象后自动创建对象。

Please note that I've simplified my case to make it simple but I will actually create several objects after the creation of a Company.

我创建了一个脚本INT包含下面的代码我common/models/文件夹:

module.exports = function (Company) { 
    Company.observe('after save', function createObjectsForNewClient(ctx, next) { 
    if (ctx.instance) { 
     log('A new Company has been created. Shall create a Privilege for it.'); 

     Privilege.create(
      {...}, 
      function (err, obj) { 
       if(err) 
        console.error(err); 

       if(obj) 
        console.lof(obj); 
       } 
      ); 
     } 
    } 
} 

这样,钩被正确触发,但回送一个异常停止说:

TypeError: Cannot read property 'Privilege' of undefined

我认为这个模型可以在某些环回/ javascript /几乎魔法范围内的某个地方使用。问题是,我也尝试在module.exports = function (Company, Privilege) {...块中添加特权模型,但它似乎并不接受列出要在该函数中使用的无限数量的模型... 您还应该注意我已经将我的模型创建为common/models/文件夹中的JSON文件,但没有为这些模型使用其他JS脚本,因为LoopBack似乎自动处理导出。它会对我们想要访问的事实产生影响吗?

我可能在某处做了某些事情,但我试图做的事似乎相当简单。有人有想法吗?

回答

2

其他型号可通过Model.app.models进入。

我通常定义我的远程方法或钩需要在第几行的所有车型,例如:

module.exports = function (Company) { 
    Company.observe('after save', function createObjectsForNewClient(ctx, next) { 
     const Privilege = Company.app.models.Privilege, 
       OtherModel = Company.app.models.OtherModel; 
     // the rest of your operation hook 

请注意,你必须为每个方法做到这一点。这是行不通的,因为模型在编译时没有引导:

module.exports = function (Company) { 
    // won't work 
    const OtherModel = Company.app.models.OtherModel; 
+0

非常感谢你,这正是我所需要的。也感谢您的提示,我可能会失去时间试图通过全球化我的其他模型使我的代码通用化! –