Использование цикла 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);
});
Другие вопросы по тегам