2017-09-01 1 views
0

いくつかの関連付けをロードする必要がある特定のフェザーサービスコールを作成したいと思います。問題は、私がフックを使って "羽のように"すると、フックは一度だけではなく、そのままであるということです。 「羽毛のある一度の協会」をする方法はありますか?通話後にフックをdestroyedにする必要があります。現在フェザーが続行し、1回の関連付け

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

私はあなたが1時間に何を意味するのか全くわからないが、あなたはあなたがフック関数の外にフラグを設定することができたら、フックを実行し、それをチェックして、スキップしたい場合このような場合はフック:

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; 
    } 
} 
関連する問題