首页 > 解决方案 > 通过 ObjectId 发布到 db 中的嵌套数组

问题描述

我的客户在一个对象中向我的服务器发送两个变量:

{ status: "Y", guest: "123xyz" }

我想取“Y”并使用来宾变量将其推送到我的数据库中,以从我的数据库中找到正确的 ObjectID(它们在大多数情况下匹配)。

我的挑战是“guests”数组嵌套在模型中,所以我试图查询它,然后将我的 req.body.status 变量推送到 ObjectID 上。这是数据库模型:

const eventSchema = new Schema({
  address: String,
  description: String,
  guests: [
    {
      type: Schema.Types.ObjectId,
      attended: String // this will be the "Y" from the client
    }
  ],
});

这是我的功能:

module.exports.checkIn = async(req, res) => {
    const guest = Event.findOne({ 'guests.ObjectId': req.body.guest });
    guest.push(req.body.status);
    await guest.save();
}

我一直在查看这些mongoose 文档(很有帮助),但我收到错误“TypeError:guest.push 不是函数”。

我可以关注文档或视频,我只是在概念上遇到了我所缺少的问题。你能帮我更好地理解这一点吗?

标签: node.jsmongodbmongoose

解决方案


推荐阅读