2017-09-01 68 views
0

我想为需要加载某些关联的羽毛服务调用做些调整。问题是,当我用钩子做“羽毛方式”时,钩子不是一次,而是继续。有没有办法做一次“羽毛一次性关联”?通话结束后,挂钩应为destroyed羽毛续集和一次结合

目前:

serviceAccountAssosiations() { 
    return function (hook) { 
     const walletModel = hook.app.service('wallets').Model; 
     const currencyModel = hook.app.service('currencies').Model; 
     const assetClassModel = hook.app.service('asset-classes').Model; 
     const exchangeModel = hook.app.service('exchanges').Model; 
     const bankModel = hook.app.service('banks').Model; 
     const valueAccountModel = hook.app.service('value-accounts').Model 
     const valueAccountTransactionModel = hook.app.service('value-account-transactions').Model 
     const walletTransactionsModel = hook.app.service('wallet-transactions').Model 
     const association = { 
     include: [ 
      { model: exchangeModel }, 
      { model: bankModel }, 
      { model: valueAccountModel, include: [{ model: valueAccountTransactionModel },{ model: currencyModel }] }, 
      { model: walletModel, include: [{ model: walletTransactionsModel },{ model: currencyModel },{ model: assetClassModel }] } 
     ] 
     }; 

     switch (hook.type) { 
     case 'before': 
      hook.params.sequelize = Object.assign(association, { raw: false }); 
      return Promise.resolve(hook); 
      break; 

     case 'after': 
      dehydrate(association).call(this, hook); 
      break; 
     } 
    } 
    } 

get (id, params) { 
    console.log('id', id) 
    let app = this.options.app; 
    return app.service('service-accounts').hooks({ 
     before: { 
     all: [this.serviceAccountAssosiations()] 
     }, 
     after: { 
     all: [this.serviceAccountAssosiations()] 
     } 
    }) 
    .get(id) 
    .then((data) => { 
     return data; 
    }); 
    } 

回答

0

我不完全知道你是一个什么时间,但如果你只想运行一次钩,你可以设置一个标志钩子函数外,检查,并跳过如果它是这样的钩子:

serviceAccountAssosiations() { 
    let ran = false; 

    return function (hook) { 
    if(ran) { 
     return hook; 
    } 

    const walletModel = hook.app.service('wallets').Model; 
    const currencyModel = hook.app.service('currencies').Model; 
    const assetClassModel = hook.app.service('asset-classes').Model; 
    const exchangeModel = hook.app.service('exchanges').Model; 
    const bankModel = hook.app.service('banks').Model; 
    const valueAccountModel = hook.app.service('value-accounts').Model 
    const valueAccountTransactionModel = hook.app.service('value-account-transactions').Model 
    const walletTransactionsModel = hook.app.service('wallet-transactions').Model 
    const association = { 
     include: [ 
     { model: exchangeModel }, 
     { model: bankModel }, 
     { model: valueAccountModel, include: [{ model: valueAccountTransactionModel },{ model: currencyModel }] }, 
     { model: walletModel, include: [{ model: walletTransactionsModel },{ model: currencyModel },{ model: assetClassModel }] } 
     ] 
    }; 

    switch (hook.type) { 
     case 'before': 
     hook.params.sequelize = Object.assign(association, { raw: false }); 
     return Promise.resolve(hook); 
     break; 

     case 'after': 
     dehydrate(association).call(this, hook); 
     break; 
    } 

    ran = true; 

    return hook; 
    } 
}