【问题标题】:Nested loops for mongodb arrays in Node.jsNode.js 中 mongodb 数组的嵌套循环
【发布时间】: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]

标签: javascript node.js mongodb nested radio-button


【解决方案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
  • 星期一

猜你喜欢
  • 2020-01-21
  • 2022-05-12
  • 1970-01-01
  • 2013-09-22
  • 1970-01-01
  • 2022-07-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多