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

标签 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_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/

相关文章:

javascript - 每 12 项向数组中添加元素

node.js - 为什么我要为所有路由处理程序添加前缀

javascript - httpUploadProgress 对于缓冲区数据没有按预期工作?

javascript - Axios 请求在 VueJs 上进入无限循环

javascript - Sunburst Chart - 添加额外的数据层

javascript - attr() 的回调函数

javascript - 如何在构建之前使用 npm 删除文件夹

node.js - 如果您指向符号链接(symbolic link),则 require 会变得困惑

javascript - 无法在 node-cron 调度方法中获取数据

javascript - Express 4 + Angular 2 HTML 5 路由问题