gpt4 book ai didi

javascript - 检查数据库mongodb Node js中是否存在多个数据数组?

转载 作者:行者123 更新时间:2023-12-03 00:06:13 24 4
gpt4 key购买 nike

我想检查数据库中是否存在数据。如果假设数据存在则k的值设置为1

global.k = 0
va roll = {roll0:"1616",roll1:"234"}
for (let i = 0; i < inputcount; i++) {
var obj1 = roll["roll" + i];

const find = async() => {
const item = await RegisterUser.find({ eventname: event_name, rollno: obj1 })
if (item.length != 0) {
global.k = 1
console.log(global.k)
} else {
global.k = -1
console.log(global.k)
}
}
find()
}
console.log(global.k)
if(global.k==0){
// code for save
}

执行if循环后,值不会打印为1-1 .实际上,我认为问题出在异步上。请帮助我

最佳答案

您调用find,但不等待其结果。最好让 async 函数包装整个循环:

const find = async() => {
global.k = 0
for (let i = 0; i < inputcount; i++) {
var obj1 = roll["roll" + i];
const item = await RegisterUser.find({ eventname: event_name, rollno: obj1 })
if (item.length != 0) {
global.k = 1
console.log(global.k)
} else {
global.k = -1
console.log(global.k)
}
}
console.log(global.k);
if (global.k == 0) {
// save...
}
}
find() // Don't put any code below this line. Put it at the end of the function above

注意:该算法本身看起来很奇怪,因为对 global.k 的每次赋值都会覆盖之前分配的值。变量 k 的名称也无助于理解其用途。

如果您需要在所有查询返回匹配项时将其设置为 1,请在此处添加break:

    } else {
global.k = -1
console.log(global.k)
break;
}

如果您需要在至少一个查询返回匹配项时将其设置为 1,请在此处添加break:

    if (item.length != 0) {
global.k = 1
console.log(global.k)
break;
}

最后的检查 if (global.k == 0) 也很奇怪,因为这相当于 if (inputcount == 0)。所以一定要检查你的逻辑。

关于javascript - 检查数据库mongodb Node js中是否存在多个数据数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54958662/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com