Я хочу обновить и вытащить пользователей из массива, используя Mongodb.
Я успешно обновляю пользователей в массиве и проверяю длину пользователей.
Если число пользователей больше или равно 2, я хочу нарезать первых 2 пользователей и удалить первых 2 пользователей из массива, используя метод pull.
пример подключения к незнакомому чату (подключение двух пользователей при нажатии кнопки connectstranger)
var userName = req.body.userName
connection.connectedusers.updateMany({}, { $push: { connectArray: [userName] } }, { upsert: true }, function (err, docs) {
if (err) {
console.log(err);
} else {
connection.connectedusers.find({}, async (err, list) => {
if (err) {
console.log(err);
}
else {
setTimeout(async () => {
if (list[0].connectArray.length >= 2) {
clearTimeout();
var shortListed = list[0].connectArray.slice(0, 2);
console.log(shortListed,'shortlisted array')
try {
await connection.connectedusers.update({},
{ $pull: { connectArray: { $in: shortListed } } },
{ multi: true }
)
const docs = await connection.connectedusers.find({});
res.json({
message: 'users selected successfully',
status: 1,
docs: docs
});
} catch (err) {
res.status(201).json(err);
}
} else {
const docs = await connection.connectedusers.find({});
console.log(docs, 'docs')
const allUsers = docs.connectArray;
console.log(allUsers, 'allUsers')
await connection.connectedusers.update({},
{ $pull: { connectArray: { $in: allUsers } } },
{ multi: true }
)
res.json({
message: 'users not selected',
status: 2,
docs: docs,
allUsers: allUsers
})
}
}, 10000);
}
});
}
})
Первый пост-запрос возвращает status 2 error : users not selected
, поэтому я хочу подождать некоторое время. Как только счетчик массивов увеличится до 2, мне нужно нарезать его и извлечь выбранных пользователей из массива.