当本机JS .forEach()阻塞时,MongoDb Cursor方法.forEach()是非阻塞的

时间:2016-03-05 21:19:16

标签: node.js mongodb

我正在使用mongodb的node.js驱动程序。我在下面得到非阻塞行为。这是因为Node.js驱动程序api?有阻止的api /选项吗? 我想避免过度使用promises 并避免对array.forEach()的承诺。

User.prototype.findUsername = function(user) {
  return this.collection.find(user);
};


function deleteUser() {
  var deleteDocs;
  var document = user.findUsername({'username': 'bob123'});
  document.forEach(function(mydoc) {
    mydoc.pets.forEach(function(doc) {
      console.log(doc.data)
      deleteDocs = doc.data;
    });
  })
  return deleteDocs;
}
bob = api.deleteUser();
console.log("outside of the function- "  + bob)
outside of the function- undefined
[ 56da547268b9d17317d05f28 ]

1 个答案:

答案 0 :(得分:2)

MongoDB' forEach是同步的,因为它执行IO,在node.js中(通常)是异步的。原生forEachArray.prototype.forEach)不会执行任何IO,这就是它同步的原因。