I'm trying to create a loop script for my app that checks if the array of users is full and if not, it puts in the user ID.
My JSON file is based on MongoDB and it has 24 entries (hours). Each entry has a mins array (see below)
I tried the following script, but it's supposed to check each array in a raw disregarding the min value.
const hour = await db.Timer.findOne({hour: time[1]}) // finding an hour in the DB
const timer = await db.Timer.findOne({hour: time[1]}, { mins: {"$elemMatch": {min: time[2]}}}) // finding a minute
let maxUsers = 3
for(let i = 0; i < hour.mins[i].users.length; i++) {
if(hour.mins[i].users.length < maxUsers){
console.log(i)
}
}
hour and timer are arrays can be found by time[1] (hour) and time[2] (minute). This is what I should work with.
// how the 'mins' array looks like
[
{
users: [ 432143, 543254, 6545423 ],
min: 21
},
{
users: [ 3421, 432143, 43213 ],
min: 22
},
{ users: [ 7735 ], min: 23 },
{ users: [], min: 20 }
]
// output for 'hour'
{
hour: 15,
mins: [
{ users: [Array], min: 21 },
{ users: [Array], min: 22 },
{ users: [Array], min: 23 },
{ users: [], min: 20 }
]
}
// output for 'timer'
{
mins: [ { users: [Array], min: 21 } ]
}
Please suggest how to check the arrays by minute.
hourandtimeris...?