2017-07-15 72 views
2

我正在使用ExpressJs,NodeJs,AngularJs。爲陣列中的每個項目運行節點端點?

比方說,我有一個數組代表雜貨店帳戶和銀行欠他們的金額。

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

該陣列可以改變,可以有1個對象或數組中的10個對象,只是取決於什麼雜貨店銀行欠那個星期。

對於每個對象,我需要運行一個Node端點來傳輸這些資金。 例如:

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

如何運行app.post(「/傳輸」)ñ的倍量,這取決於在陣列中的對象的量?

還是一個小菜,所以我很難說我的問題。 簡單起見:爲數組中的每個項目運行一個函數。

2 items =運行兩次函數。 (異步)

回答

0

可以傳遞該數組中請求體並調用執行該陣列中的每個項目的轉移的輔助功能:

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

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

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

即輔助功能可以是異步,返回一個承諾,你可以用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

很高興幫助! :) –

相關問題