mongodb - requête simultanée mangouste, comment envelopper avec promise.all
滿天的星座
滿天的星座 2017-05-02 09:23:25
0
1
626

Ce que je veux réaliser, c'est faire fonctionner la table reply - save et la table topic en même temps après user, puis les remettre ensemble. Je ne sais pas comment utiliser promise.all pour envelopper. ces deux opérations de mise à jour des requêtes. J'espère que vous pourrez m'aider à les résoudre.

Mise à jour : ce qui suit est la version modifiée.

/* 回复 话题 */
router.post('/reply', (req, res, next) => {
  let topic_id = req.body.topic_id,
      content  = req.body.content

  let replyEntity = new replyModel({
    author: req._id,
    topic: topic_id,
    content
  })

  replyEntity.save()
             .then((_new_reply) => {
                Promise.all([
                  topicModel.findByIdAndUpdate(topic_id, {
                    $inc: {replyNum: 1},
                    last_reply_author: req._id,
                    last_reply_time: Date.now()
                  }),
                  userModel.findByIdAndUpdate(req._id, {
                    $push: {replies: _new_reply._id}
                  })
                ])
                .then((res_arr) => {
                  return res.json({
                    status: 0
                  })
                })
                .catch((err) => {
                  return res.json({
                    status: -1
                  })
                })
             })
             .catch((err) => {
                return res.json({
                  status: -1
                })
             })
})
滿天的星座
滿天的星座

répondre à tous(1)
迷茫
replyEntity.save()
    .then((_new_reply) => {

        var topic = function (topic_id,authorId) {
            return topicModel.findByIdAndUpdate(topic_id, {
                $inc: {replyNum: 1},
                last_reply_author: authorId,
                last_reply_time: Date.now()
            }).exec();
        }
        var user = function (authorId,replyId) {
            return userModel.findByIdAndUpdate(authorId, {
                $push: {replies: replyId}
            }).exec();
        }
        return Promise.all([topic(topic_id,req._id), user(req._id,_new_reply._id)])
            .then(function (results) {
                console.log('===results===',results);
                return res.json({
                    status: 0
                })
        }).catch((err) => {
                return res.json({
                    status: -1
                });

    }).catch((err) => {
    return res.json({
        status: -1
    })
})

Je l'ai probablement noté, vous pouvez l'essayer

Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal