如何使用mongodb和node js更新和拉动用户

时间:2019-06-03 08:11:14

标签: node.js mongodb mongoose mean-stack mean

我想使用Mongodb更新并从阵列中拉用户。

我正在成功更新数组中的用户并检查用户的长度。

如果用户大于或等于2,我想对前2个用户进行切片,并使用pull方法从数组中删除前2个用户。

陌生人聊天连接示例(当两个用户按下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后,我需要对其进行切片并从数组中拉出选定的用户。

1 个答案:

答案 0 :(得分:0)

这将使用PyTypeObject组合键等待2秒

await and promise