Nodejs Angularjs Mongoose查询异步映射

时间:2015-03-25 16:42:16

标签: node.js mongodb async.js

从下面的代码中,我可以添加到我的数据库中。但是,当我尝试mongoose-find寻找数据库时,我没有得到任何价值。任何人都可以帮忙吗?我想res.json结果。

app.post('/api/infosave', function(req,res){
  async.series([function (cb){
    dbinfo.remove({}, function(err,result){
      if (err) throw err;
      cb(null);
    });
  }, function (cb){

    var bookNum = [];
    for (var i = 0; i < req.body.numBooks; i++) {
      bookNum.push(i+1)
    }
    async.map(bookNum, function(num, cb) {
      dbinfo.create({
        numBooks: num,
        done: false
      }, cb);
    }, cb);

  }, function (cb){
    dbinfo.find({},function(err,result){
      if (err)
        res.send(err);
      res.json(result);
      console.log(result);
      cb(null);
    });
  }], function(error, results) {

  });
});

1 个答案:

答案 0 :(得分:1)

正如我在评论中所说:你在其中一个系列函数中调用res.json(),这是行不通的。你应该做的是将dbinfo.find()的结果传递给本地回调:

dbinfo.find({},function(err,result){
  if (err)
    cb(err);
  cb(null, result);
});

,在async.series回调中,请致电res.json()

...
}], function(error, results) {
  if (error) return res.json({ error: error });
  return res.json(results[2]); // the result you want should be third element of results
});