可以說我有一個處理N個用戶的腳本。腳本可以看兩種方法之一,假設資源充足,速度更快?我可以使用Promise.all
或async.parallel
。在Node.js中使用MongoDB進行擴展,我應該什麼時候一次查詢所有的ID,並且同時查詢每個ID?
選項1個
function processUsers(userIds) {
monog.find({_id: { $in: userIds }, (userDocs) => {
const tasks = userDocs.map((userDoc) => processUser(userDoc))
async.parallel(tasks, (err, results) => console.log('finished'))
});
}
選項2
function processUsers(userIds) {
const tasks = userIds.map((userId) => {
mongo.findOne({_id: userId}, (err, userDoc) => {
processUser(userDoc);
})
})
async.parallel(tasks, (err, results) => console.log('finished'))
}
在選項2中,您正在執行更多的數據庫請求,這將比單個查詢花費更多的時間。這是一個詭計問題嗎? :-) –