Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/mongodb/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/linq/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js MongoDB在NodeJS中查找而不使用它_Node.js_Mongodb - Fatal编程技术网

Node.js MongoDB在NodeJS中查找而不使用它

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({$

如果集合id不在数组中,我会尝试查找集合中的所有文档

这是我的代码:

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]。项不是空的,并且包含所需的数据。还有一个提示。不要改变你的问题。如果您想添加新的代码行或注释,只需将它们附加到问题的末尾即可。