2017-07-15 3 views
2

私はExpressJs、NodeJs、AngularJsを使用しています。配列内のすべての項目に対してノードエンドポイントを実行しますか?

私は、食料品店の勘定を表すいくつかのオブジェクトと、銀行が借りている金額を持つ配列を持っているとします。

[{ 
account: 1, 
amount: 2.33 
}, 
{ 
account: 2, 
amount: 5.99 
}, 
{ 
account: 3, 
amount: 6.00 
}]; 

この配列は、単に銀行がその週に負う何の食料品店に依存して、変更することができますし、1つのオブジェクトまたは配列の10個のオブジェクトを持つことができます。

オブジェクトごとに、ノードのエンドポイントを実行して、その金額を転送する必要があります。 例えば:

const app = module.exports = express(); 
app.post('/transfer', (req, res) => { //Code goes in here }; 

は、どのように私は、配列内のオブジェクトの量に応じて、app.post(「/転送」)のn倍の量を実行していますか?

まだnoobですので、私は自分の質問に苦労しています。 簡単にするには:array内のすべての項目に対して関数を実行します。

2件= 2回の実行機能です。補助機能は、非同期であり復帰でき

app.post('/transfer', (req, res) => { 
    const accounts = req.body; 

    accounts.forEach((account) => transfer(account)); 
}; 

function transfer(account) { 
    // perform the transfer for a single account 
} 

する:あなたはリクエストボディにその配列を渡すと、アレイ内の各項目の転送を実行する補助機能を呼び出すことができ

答えて

0

(非同期)お約束します。Promise.allを使用してすべての転送を解決することができます:

app.post('/transfer', (req, res) => { 

    const accounts = req.body; 
    const transferPromises = accounts.map((account) => transfer(account)); 

    Promise.all(transferPromises).then(...).catch(...); 
}; 

function transfer(account) { 
    // returns a promise of transfer for a single account 
} 
+1

ああ、ありがとうございます。私は高次関数の有用性を忘れる。私は正直なところそれが可能だとは思わなかったが、それは魅力的だった。ありがとう! – Cesar

+1

喜んで助けてください! :) –

関連する問題