Node + Mongo:findOne OK但是find()。forEach DONT

时间:2017-04-06 15:28:19

标签: node.js mongodb typeerror

我的问题似乎与节点的异步方面有关,但我无法理解为什么。

此代码工作:

      expertsArray = ["expert1", "expert2"];
      db.collection("users").findOne({first_name: expertsArray[0]}, function(err, expert) {
        console.log(expert.userid);
        });
      }); 

此代码BUGS:

      expertsArray = ["expert1", "expert2"];
      db.collection("users").find({ first_name: {$in: expertsArray} }, function(err, experts) {
        experts.forEach(function(err, expert) {
          console.log(expert.userid);
          });
        });
      }); 

在第二种情况下,专家存在且是[对象],但错误是:

  

错误:[致命]你的机器人TypeError发生了未处理的异常:   无法读取属性'userid'为null

我也尝试将第一个代码放入FOR循环中,但是出现了同样的错误...... 谁能帮我理解?非常感谢:)

1 个答案:

答案 0 :(得分:2)

forEach中的参数错误。

根据Mozilla,论据是:

currentValue, index

但你有

err, expert

所以请尝试:

experts.forEach(function(expert, expertIndex) {
  console.log(expert.userid);
  });
});