2015-11-04 5 views
0

Я бил головой о стену, пытаясь запросить Монго успешно.Как я могу запросить в Mongo?

Этот код:

async.waterfall([ 
     function(callback){ 
      cursor = db.collection(collection).findOne(query) 
      callback(null); 
     }, 
     function(callback){ 
      console.log("Result is:" + cursor); 
      console.log(JSON.stringify(cursor)); 
      callback(null); 
     } 
    ]); 

Производит следующий вывод:

result is:[object Object] 
{} 

Почему? Существует документ, который он должен найти в коллекции.

Как Последующий вопрос, как я могу получить, чтобы увидеть, что

[object Object] 

это?

+0

Try '«Результат будет:»cursor' вместо конкатенации, чтобы правильно войти. Вы должны передать результат запроса на обратный вызов, а не на курсор. т. е. использовать обратный вызов в обратном вызове к '.findOne'. Это родной драйвер MongoDB? Какая версия? –

+0

Я использую Mongo v 3.0. Можете ли вы объяснить/сказать это разными словами: «Вы должны передать результат запроса на обратный вызов, а не на курсор, т. Е. Использовать обратный вызов в обратном вызове на .findOne». Благодаря! (Помимо этого: «Результат:», изменение курсора просто печатает {}.) – Dirk

ответ

4

В принципе, вы должны ждать вашего запроса, чтобы закончить, а затем вызвать функцию обратного вызова и ожидать какого-либо результата:

 async.waterfall([ 
      function(callback){ 
       db.collection(collection).findOne(query, function(err, result) { 
        callback(err, result); // if there is no err, it will be null 
       }); 
       // the above can be simplified to just          
       // db.collection(collection).findOne(query, callback); 
       // since findOne callback and current function callback have the same arguments 
      }, 
      function(result, callback) { 
       // use comma here to automatically doing JSON.stringiry(result) 
       console.log("Result is:", result); 
       callback(); 
      } 
     ], function(err) { 
      // here is your final callback where you know that async.waterfall 
      // is finished (with or without error) 
     }); 
Смежные вопросы