我正在使用 mongodb 的 node.js 驱动程序。我在下面得到了非阻塞行为。这是因为 Node.js 驱动程序 api 的原因吗?有阻止的 api/选项吗? 我想避免过度使用 promise 并避免仅针对 array.forEach() 的 promise 。
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 ]
最佳答案
MongoDB 的 forEach
是同步的,因为它执行 IO,而在 Node.js 中(通常)是异步的。原生 forEach
(Array.prototype.forEach
) 不执行任何 IO,这就是它是同步的原因。
关于node.js - 当 native JS .forEach() 阻塞时,MongoDb 游标方法 .forEach() 是非阻塞的,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35820035/