javascript - 如何让node.js和mongoDB中的for循环同步运行

标签 javascript node.js mongodb for-loop

这是我第一次使用 Node.js,我遇到了一些问题。

我从 API 获取一些数据,并将它们存储在一个数组中。

然后,我正在执行一些 MongoDB 查询,以了解我在该数组上拥有的数据是否在数据库中。

我想为每次出现的数组使用一个 for 循环,但是当我尝试调用 MongoDB 时,for 循环继续立即增加计数器,而不等待查询和相关响应的结束,我只获取数据最后一次出现(重复)。

我的代码有一部分,因此我总是在最后一次出现时得到控制台相对的“结果”(例如,如果我期望像“1、2、3、4、5”这样的东西,我有'5 5 5 5 5')

我怎样才能确保 for 循环以正确的方式工作?

感谢您的帮助。

for ( counter = 0; counter < array.lenght; counter ++) {

    MongoClient.connect(url, function (err, db) {

       var query = { name: array[counter] };

       db.collection("collectionName").find(query).toArray(function (err, result) {

           // Check if 'query' value exist in the database, if yes do some stuff, otherwise do others stuff
           console.log(result); 


    }
)

编辑:为了让大家知道,代码终于可以运行了。 谢谢你的帮助。

最佳答案

尝试运行下面的代码。让我知道它是否有效。

let fun = async function () {
    for (var counter = 0; counter < array.length; counter++) {
        await MongoClient.connect(url, function (err, db) {
            var query = { name: array[counter] };
            db.collection("collectionName").find(query).toArray(function (err, result) {
                // Check if 'query' value exist in the database, if yes do some stuff, otherwise do others stuff
                console.log(result);
            })
        })
    }
}

fun();

关于javascript - 如何让node.js和mongoDB中的for循环同步运行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47523285/

相关文章:

javascript - IE 未实现 JavaScript 错误

javascript - for 循环中的键/值对出现问题 : Cannot read property 'achievement' of undefined\n

javascript - 你如何做点符号 react 组件与 react Hook ?

javascript - 如何从 WebStorm 中运行 nodemon?

node.js - 如何创建列出子文档长度的 Mongoose 虚拟字段?

java - 如何使用用户名和密码在 Java 中连接到 MongoDB 3.2?

javascript - Javascript SQL INSERT 帮助

node.js - 非阻塞http服务器中的阻塞代码

mysql - 如何在 MySQL/MariaDB 中以 JSON 形式返回 LONGTEXT 字段

node.js - 如何将 $match 与条件 if-else 一起使用?