javascript - mongodb在事件评论中将用户添加到喜欢的数组

标签 javascript node.js mongodb mongoose

所以我正在尝试将用户添加到 likes 数组,目前我无法这样做,因为我找不到如何获取事件评论的方法,findone 失败,并且我使用 findone 获取捕获错误功能(on event.评论),尝试过映射,但由于模式看起来像那样(见下文)我有点困惑。

事件模型

  creator: {
    type: Schema.Types.ObjectId,
    ref: 'User'
  },
  comments: [
    {
      user: {
        type: Schema.Types.ObjectId,
        ref: 'User'
      },
      text: {
        type: String,
        required: true
      },
      likes: [
        {
          user: {
            type: Schema.Types.ObjectId,
            ref: 'User'
          }
        }
      ]
    }
  ]
}

我当前的功能:

  commentLike: async (req, res) => {
    Events.findById(req.params.idas)
      .then((event) => {
        event.comments.findById(req.params.commentID) //this fails maybe since its not schema model anymore?
          .then((comment) => {
            if (comment.likes.filter((like) => { return like.user.toString() === req.params.id; }).length > 0) {
              return res.status(400).json({ alreadyliked: 'already liked' });
            }
            event.comment.likes.unshift({ user: req.params.id });
            return event.save().then((resevent) => { return res.json(resevent); });
          });
      })
      .catch((err) => {
        res.status(404).json({ nopostfound: 'No commnet found' });
      });
  }

我传递了三个参数 id-这是用户ID idas - 这是事件 ID commentID - 评论编号

最佳答案

你可以试试这个

Events.findOneAndUpdate(
  { _id: req.params.idas, comments: { $elemMatch: { user: req.params.commentID } } },
  { $push: { "comments.$.likes": { user: req.params.id } } }
)

关于javascript - mongodb在事件评论中将用户添加到喜欢的数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51464648/

相关文章:

javascript - 如何创建一个返回等待 EventEmitter 的 Promise 的函数?

javascript - 通过 jquery 单击 "enabled = false"复选框(asp.net)

node.js - 将 socket.io 切换到端口 80 导致传输切换到 xhr 轮询

javascript - 'console' 在 shell 中未通过使用 webpack 和 node.js 进行定义

node.js - 在 Mongoose 中设置查找后转换 Hook 的最简单方法

Python if语句,只显示一个选项

javascript - 如何从图表js中的图表中删除轴线

javascript - 如何使用 JSON 数据进行动态星级评分

Node.js 应用程序未在 AWS Elastic Beanstalk 上运行

node.js - 使用 Mongoose 库更新 Express JS 中的数据库架构