Использование цикла for с асинхронностью в nodejs
Я связался с mongodb и nodejs.
У меня есть вопрос о сохранении результатов запроса в список.
results = [];
for(i = 0; i<query.length; i++){
db.collection(collectionName).find(query[i]).toArray(function(err, result){
results[i] = result;
});
}
Я использовал async.waterfall, но он работает не очень хорошо... Если бы вы исправили эту проблему, как я, пожалуйста, как это исправить?
запрос, как это:
{
location:{
$geoWithin : {
$center: [[lng, lat], radian]}},
time : "time value"
}
lng, lat, время - список..
1 ответ
В зависимости от того, что содержит массив запросов, лучше выполнить один запрос, который использует $or
оператор вместо циклического обхода массива запросов и запуска запросов к серверу для каждого запроса:
db.collection(collectionName).find({ '$or': query }).toArray((err, results) => {
console.log(results);
});