2017-09-22 14 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

非常感謝你,這正是我所需要的。也感謝您的提示,我可能會失去時間試圖通過全球化我的其他模型使我的代碼通用化! –