Node.js MongoDB在NodeJS中查找而不使用它
如果集合id不在数组中,我会尝试查找集合中的所有文档 这是我的代码:Node.js MongoDB在NodeJS中查找而不使用它,node.js,mongodb,Node.js,Mongodb,如果集合id不在数组中,我会尝试查找集合中的所有文档 这是我的代码: warehouses.find(query, items).toArray(function (error, docs) { if (error) { error(error); return; } if (docs) { var material = db.collection('material'); material.find({$
warehouses.find(query, items).toArray(function (error, docs) {
if (error) {
error(error);
return;
}
if (docs) {
var material = db.collection('material');
material.find({$nin: {'_id': docs[0].items}}, function (e, items) {
if (error) {
error(error);
return;
}
success(items);
});
}
});
在material.find行中,currentItems有两个ObjectsID,但find的返回值为空。。怎么了?这与nodejs的事件循环功能有关。每个回调函数都是并行执行的。因此,当以material.find开头的行开始执行时,可能
function (item, index) {
currentItems[index] = item._id;
}
仍在执行中。这就是为什么会得到一个空结果。为了实现您的目标,您应该只在一个回调函数中完成所有工作。遵循以下步骤:
仅在查询中的第一个querypopulate currentItems变量中选择ID。因此,您可以删除doc.items.foreach。。。。
然后调用函数material.find。。。。查询的内部回调函数。
代码warehouses.findOne仅返回一项。因此没有数组指向.forEach on.yes,但是当我执行docs.item时,我会得到item字段,当我执行db.collection'material'时,它包含一个数组;currentItems变量包含查询的_id。。请在回答之前阅读所有问题和代码。我认为您应该声明var currentItems=[];在回调内部,就在foreach之前。能不能改变点什么,我不是sure@Vadorequest相同的结果..文档响应是空的总是以相同的方式回答我,我正在寻找awnser我的问题,我找不到任何东西,我在这里问..有什么问题吗?我根据您的指示编辑代码,但结果相同,在successdocs.items中为空。您的查询格式也错误。检查$nin用法:。代码似乎还可以。只需确保文档[0]。项不是空的,并且包含所需的数据。还有一个提示。不要改变你的问题。如果您想添加新的代码行或注释,只需将它们附加到问题的末尾即可。