【发布时间】:2018-05-11 10:06:01
【问题描述】:
这是我第一次使用 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);
}
)
编辑:只是为了让大家知道,代码终于可以工作了。 谢谢你的帮助。
【问题讨论】:
-
您尝试过使用
await关键字了吗? -
按照@UghThatGuyAgain 的建议检查async / await
-
但是,循环中的
await并不总是正确的:请确保您确实想要强制顺序执行。通常,当在循环语句中时,各个步骤彼此独立。如果它是可并行化的,则创建一个promsies数组和await Promise.all(...)
标签: javascript node.js mongodb for-loop