Node.js 中 mongodb 数组的嵌套循环

Posted

技术标签:

【中文标题】Node.js 中 mongodb 数组的嵌套循环【英文标题】:Nested loops for mongodb arrays in Node.js 【发布时间】:2017-07-06 23:21:40 【问题描述】:

嘿,所以我对 Node.js 和 Mongodb 相当陌生,我正在制作一个花名册创建系统,我想制作它以便只有两个用户/员工可以在给定的班次中工作。为简单起见,班次分为“白天”和“夜晚”,它们位于用户可以选择的单选按钮表中。班次页面的加载但是我想禁用那些已经被其他两个用户选择的按钮。

我认为外部循环应该遍历用户的 shifts 数组(星期一 --> 星期日),然后内部循环应该遍历 mongodb 数据库中的每个用户。最终我想让代码在一周中的每一天都能正常工作,但现在只需要星期一才能正常运行。

感谢您的帮助和建议

function disableOnLoad() 
    console.log("disableOnLoad reached");
    var dayCount=0;           
    var nightCount=0;
    $.getJSON( '/shiftsTable', function( data ) 
        $.each(data, function()
            userListData = data;         
        for(i = 0; i < 7; i++)  
            **//$.each(data, function()**
            if(this.shifts[i]=='day')
             if(i==0)
                dayCount++;
                console.log("dayCount: "+dayCount);  
                if(dayCount>2)document.getElementById("monDay").disabled=true;
             
            
            else if(this.shifts[0]=='night')
                nightCount++;
                if (nightCount>2)document.getElementById("monNight").disabled=true;
             
            
            );
    );
;

【问题讨论】:

你的班次 JSON 看起来如何? @SharjeelAhmed 整个用户对象如下 "_id" : ObjectId("589f60999c471a32c6a3a380"), "name" : "Ciara", "email" : "ciara@test.com",公司”:“Apple”,“用户名”:“Ciara”,“密码”:“$2a$10$QkaRzb7W/BOzvtnY8hPtQ.j3GWy.XI92X6osh3m4/TNEuPBrAprva”,“职位”:“销售助理”,“位置”:“都柏林", "admin" : 0, "班次" : [ "day", "day", "night", null, null, null, null, "23" ] 对我来说看起来不错,你在哪里遇到问题? @SharjeelAhmed 上面的代码无效,如果我删除“if(i==0)”语句,那么代码会遍历用户并检查他们是否总共有两个“天”在他们的班次数组中,而我想遍历所有用户并检查他们中是否有两个在他们的班次中使用“day”[0] 【参考方案1】:

假设这是数据

    data = [
    "_id": "589f60999c471a32c6a3a380",
    "name": "Ciara",

    "position": "Sales assistant",
    "location": "Dublin",
    "admin": 0,
    "shifts": ["day", "day", "night", null, null, null, null, "23"]
  ,
  
    "_id": "589f60999c471a32c6a3a380",
    "name": "Ciara2",

    "position": "Sales assistant",
    "location": "Dublin",
    "admin": 0,
    "shifts": ["day", "day", "night", null, null, null, null, "23"]
  ,
    "_id": "589f60999c471a32c6a3a380",
    "name": "Ciara3",
    "position": "Sales assistant",
    "location": "Dublin",
    "admin": 0,
    "shifts": ["day", "day", "night", null, null, null, null, "23"]
  ];

所以这段代码对我有用

     $.each(data, function(val) 

    userListData = data;
    for (i = 0; i < 7; i++)  //* * //$.each(data, function()**
      if (i==0 && this.shifts[i] == 'day') 
          dayCount++;
          if (dayCount == 2) 
            document.getElementById("monDay").disabled = true;
          
       else if (i==0 && this.shifts[i] == 'night') 
        nightCount++;
        if (nightCount == 2) 
          document.getElementById("monNight").disabled = true;
        
      
    
  );


让我知道它是否有效。

【讨论】:

这对我来说也很合适,但它对我不起作用,与帐户选择按钮的天数无关 在此处粘贴您的 html 在您的控制台上是否还有任何错误? 我在 html 中引用脚本的唯一地方是 班次表示例如下:
硬编码我上面给出的“数据”变量,让我知道它是否有效,否则你需要粘贴你从 ajax 调用中得到的整个 JSON

星期一

以上是关于Node.js 中 mongodb 数组的嵌套循环的主要内容,如果未能解决你的问题,请参考以下文章

如何使用node.js中的循环将表单数据保存为对象和对象数组到mongodb?

Node.js 循环遍历嵌套的 Javascript 对象

如何在 mongodb/mongoose 的嵌套数组中检查是不是存在并更新对象?

在嵌套的Array Structure中使用node.js和mongodb聚合结果集

如何将 MongoDB 查询从 Node.js 驱动程序格式调整为 Mongoose 格式

Node.JS + MongoDB聚合从MongoDB中的DataBase中查找数组中的数组