无法从MongoDB检索文档

时间:2019-09-22 04:36:31

标签: node.js mongodb

我正在尝试从mongo db检索我的文档。

我向我的节点服务器发出ajax get请求,并且该服务器应该根据“ breed”变量来查找文档,并将其放在列表中,然后将其发送回客户端。

然后在ajax的成功部分中,用列表填充列表视图。

问题是即使我的集合中有一个满足条件的文档,我仍然相信find()函数返回null。

这是我检索文档的方式:

function search(req,res){
  var merr = mongoerr400(res)

  var breed
  if  (req.params.query == "Foghorn")
  breed={breed:"Foghorn"};
  else if  (req.params.query == "Hawk")
  breed = {breed:"Hawk"};
  else if (req.params.query == "Tweety")
  breed = {breed:"Tweety"};
  else if (req.params.query == "Little")
  breed = {breed:"Little"};
  else if (req.params.query == "Bertha")
  breed = {breed:"Bertha"};

  try{
    mongo.coll(
      'chicken',
      function(coll){
        coll.find(
          {breed},
          merr(function(cursor){
            var list = []
            cursor.each(merr(function(chicken){
              console.log(chicken);
              if( chicken ) {

                var item = {
                  _id: chicken._id,
                  id: chicken.id,
                  dateTime: chicken.dateTime,
                  latitude: chicken.latitude,
                  longitude: chicken.longitude,
                  weight: chicken.weight,
                  eggs: chicken.eggs,
                  grain: chicken.grain,
                  category: chicken.category
                }

                list.push(item);
              }
              else {
                common.sendjson(res,{ok:true,list:list})
              }
            }))
          })
        )
      }
    )
  }
  catch (err) {
    console.log('Error writing to the file: ' + err.message)
    res.sendStatus(500);
  }
}


mongo.coll = function(name,win,fail){
  mongo.db.collection(name,mongo.res(win,fail));
}

console.log(chicken)在控制台中返回null,结果是它向我的客户端发送了一个null列表。

我在mongodb中的文档的example。 知道为什么吗?

1 个答案:

答案 0 :(得分:1)

  1. 'find()'中的第一个参数应为{breed:“ Hawk”}之类的对象(将那些花括号删除为“ breed”)
  2. 'common.sendjson()'不应在该'else'语句中。将其移到下面的某个位置,以便在所有检索到“列表”之后,它将把它们发送给客户端。