node.js - 通过 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 不是函数”。
我可以关注文档或视频,我只是在概念上遇到了我所缺少的问题。你能帮我更好地理解这一点吗?
解决方案
推荐阅读
- c - 如何在 C 中将 unsigned long long 转换为 float/int?
- node.js - 尝试将 xlsx 文件转换为 html,然后转换为 pdf 文件,但出现错误 NodeJS
- python - 计算字符串中字母的频率,而不是空格、数字或标点符号
- docker - Docker-compose - 启动时的 Docker
- python - Jupyter Notebooks 中用于机器学习任务的 CPU 使用率/速度
- python - 获取回溯(最近一次调用最后一次):文件“
",第 1 行,在 NameError:名称“文件名”未定义 - machine-learning - 交叉验证中的 PCA;然而,只有一个变量的子集
- bash - 将 ```sha``` 校验和输出以二进制格式而不是 bash 中的纯文本十六进制转储到磁盘
- java - 适用于 Java 的 AWS 开发工具包版本 2 - 删除 S3“文件夹”或删除多个 S3 对象
- shell - 收到错误mailx:非法选项-在bash脚本中添加附件时