代码之家  ›  专栏  ›  技术社区  ›  Asaf Aviv

仅返回已创建的子文档mongoose

  •  -2
  • Asaf Aviv  · 技术社区  · 7 年前

    我需要将新文档推入数组并使用他的\u id。

    现在我正在使用findOneAndUpdate,我知道我可以使用{new:true},但我只需要创建的文档,而不需要父文档。

    这是我目前的代码

    User.findOneAndUpdate(
        {
            'posts._id': req.params.id
        },
        {
            $push: {
                'posts.$.comments': {
                    from: {
                        _id: req.user._id,
                        username: req.user.username,
                    },
                    body: req.body.commentBody
                }
            }
        },
        err => {
            if (err) console.log(err)
            // Do something with ObjectId
        }
    );
    

    提前谢谢。

    1 回复  |  直到 7 年前
        1
  •  1
  •   Dushyant Bangal    7 年前

    findOneAndUpdate callback为您提供更新的文档。

    你有帖子的 _id 。您可以使用它查找要向其添加评论的帖子。推送注释时,它将是post数组中的最后一个元素。

    var mypost = doc.posts.find(function(post){
        return post._id.toString()==req.params.id
    });
    
    console.log(mypost.comments[mypost.comments.length]._id)