Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/479.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/2/node.js/41.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/perl/10.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
Javascript 卡在节点上+;MongoDB异步查询问题_Javascript_Node.js_Mongodb_Asynchronous - Fatal编程技术网

Javascript 卡在节点上+;MongoDB异步查询问题

Javascript 卡在节点上+;MongoDB异步查询问题,javascript,node.js,mongodb,asynchronous,Javascript,Node.js,Mongodb,Asynchronous,一个小序言:我对Node的工作非常陌生,所以请容忍我的无知 我试图从Node.js中的数组中传递一些信息,并检查它是否存在于MongoDB文档中。我仍在绞尽脑汁研究节点以及如何异步处理数据库 我有以下代码 for (i in articleTitle) { console.log(articleTitle[i]); // Use connect method to connect to the Server MongoClient.connect(mongoUrl,

一个小序言:我对Node的工作非常陌生,所以请容忍我的无知

我试图从Node.js中的数组中传递一些信息,并检查它是否存在于MongoDB文档中。我仍在绞尽脑汁研究节点以及如何异步处理数据库

我有以下代码

for (i in articleTitle) {

    console.log(articleTitle[i]);

    // Use connect method to connect to the Server 
    MongoClient.connect(mongoUrl, function(err, db) {
        if (err) throw err; // Throw error
        var query = { title: articleTitle[i] }; // Query Parameter

        // Perform Query
        db.collection(mongoCollection).find(query).toArray(function(err, result) {
            if (err) throw err; // Throw error
            if (result == '') {
                console.log('No results found for title:', articleTitle[i]);
            } else {
                console.log('Found an entry');
            }

            db.close(); // Close connection
        });
    });
}
在上面的代码中,我有一个名为
articletTitle
的字符串数组(例如:
['Title1','Title2','Title3']
),然后我运行数组中的每个标题(使用
for()
循环)来检查数据库中是否存在每个标题

我得到的结果如下:

> Title1
> Title2
> Title3
> No results found for title: Title 3
> No results found for title: Title 3
> No results found for title: Title 3
如上所述,它似乎三次检查数组中的最后一个对象。我也曾尝试过实施该计划,但也为此而挣扎


任何帮助都将不胜感激。

您遇到的问题是回调函数中变量
i
的范围

使用
代替(让我输入articletTitle)
。 这将为每个迭代创建一个新变量i,并且范围仅限于该迭代


这个问题的答案详细解释了为什么会发生这种情况,以及JavaScript中的作用域和闭包。上述问题与此问题完全相同。

您遇到的问题是回调函数中变量
i
的范围

使用
代替(让我输入articletTitle)
。 这将为每个迭代创建一个新变量i,并且范围仅限于该迭代


这个问题的答案详细解释了为什么会发生这种情况,以及JavaScript中的作用域和闭包。上面的问题与这个问题完全相同。

效果很好。谢谢你提供进一步的信息。(将在7分钟内标记为答案;p)工作正常。谢谢你提供进一步的信息。(将在7分钟内标记为答案;p)