2016-05-06 92 views
1

我正在使用sails-hook-sequelize在我的sails應用中加載作爲ORM的sequelize。但是,我的控制器和策略設置(即僅創建其方法)取決於模型。我需要運行sails-hook-sequelize可安裝鉤子,然後運行控制器和策略掛鉤(目前正在運行它並且控制器/策略未能加載)。我怎樣才能做到這一點? T在原生鉤子之前加載可安裝的鉤子

在此先感謝。

編輯:下面是一些代碼來說明什麼,我試圖完成:

UserController.js

let Endpoint = require('../classes/Endpoint'); 

let endpoint = new Endpoint(User); 

Object.assign(endpoint, { 
    find 
}); 

module.exports = endpoint; 

function find(req, res, next) { 
    User.findAll(
     { 
      where: req.query, 
      include: [ 
       { 
        model: Privilege, 
        include: [ 
         { 
          model: Account, 
          where: { 
           accountPkey: { 
            $in: AuthorizationService.accountsForPrivileges(req.tokenData.privileges, ['ADMINISTRATOR', 'OFFICE MANAGER']) 
           } 
          } 
         } 
        ] 
       } 
      ] 
     }) 
     .then(users => res.ok(users)) 
     .catch(err => res.serverError(err)); 
} 

基本上,我有實例,然後添加方法添加到默認端點類。你可以看到Endpoint類有一個模型參數。但是,當該鉤子運行時,模型還不存在,因爲它們是由第三方鉤子定義的(使用sequelize)。

回答

0

在Sails的核心鉤子之前,目前沒有辦法運行第三方鉤子。

很多時候,當我看到類似這樣的問題時,它來自試圖創建一個類似Wordpress的平臺的人,他們假設對於最終用戶創建的每個新「實體類型」(即博客,文章,評論)他們需要一個新的模型。另一種方法是創建一個Entity模型,其中contents屬性與ContentEntityAttribute模型相關,該模型或多或少只是一個鍵/值存儲。然後,您可以使用通配符路線讓EntityController操作加載正確類型的實體。

+0

我編輯了OP,嘗試解釋我想要完成的事情,也許你有一些想法。我無法真正地混淆模型(我不認爲),因爲我在一個已經存在的數據庫之上建立了一個非常深思熟慮的架構。 – pQuestions123

+0

我想我有辦法解決這個問題。我怎樣才能指定我的項目/已安裝的鉤子的順序? (即我想創建一個項目掛鉤,它會在sails-hook-sequelize之後運行) – pQuestions123

+0

這是一個很好的問題,但它值得單獨發佈,以防其他人有相同的問題!這個問題的答案仍然存在,「你不能這樣做」,暫時。 – sgress454