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 中引用脚本的唯一地方是 班次表示例如下:以上是关于Node.js 中 mongodb 数组的嵌套循环的主要内容,如果未能解决你的问题,请参考以下文章
如何使用node.js中的循环将表单数据保存为对象和对象数组到mongodb?
如何在 mongodb/mongoose 的嵌套数组中检查是不是存在并更新对象?
在嵌套的Array Structure中使用node.js和mongodb聚合结果集