Javascript 检查数据库mongodb node js中是否存在多个数据数组?
我想检查数据是否存在于数据库中。如果假设数据存在,则k的值设置为1Javascript 检查数据库mongodb node js中是否存在多个数据数组?,javascript,node.js,express,Javascript,Node.js,Express,我想检查数据是否存在于数据库中。如果假设数据存在,则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_n
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。实际上,我认为问题在于异步。请帮助我您呼叫“查找”,但不要等待结果。最好让异步函数包装整个循环:
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
如果在至少一个查询返回匹配项时需要将其设置为1,请在此处添加一个分隔符:
另外,如果global.k==0,则在末尾进行的检查也很奇怪,因为这相当于如果inputcount==0进行检查。因此,请务必检查您的逻辑。您的代码的开始括号比结束括号多。请修复括号。不确定console.log是在循环内还是在循环外对不起,先生,现在请检查我的代码我尝试了,但该页面对我没有帮助,你能发布示例代码吗?当我在控制台内时,k的值为1或-1,先生,但在外时,值为0。实际上,在外部函数被执行之前,它最终被执行,这正是它应该如何工作的。您必须在then回调中执行此操作,因为数据库需要时间来完成其工作。或者,您必须将所有代码放在一个异步函数中。阅读异步代码。您必须尽一切努力使所有代码异步工作。先生,请检查git repo先生,我想检查数据库中是否存在多个数据所有这些数据不存在意味着k值为0之后,我将检查k值如果k为0,我将保存数据到DatabaseSorry,你应该编辑你的问题,并把相关的代码放在那里。还要解释“检查多个数据”的含义:解释要发送给客户的内容。请看我的答案,以及我在结尾处写的内容。我已经更新了我的问题和代码,先生,请检查我更新的代码
} else {
global.k = -1
console.log(global.k)
break;
}
if (item.length != 0) {
global.k = 1
console.log(global.k)
break;
}