gpt4 book ai didi

javascript - 如何更新嵌套的 mongo 对象

转载 作者:太空宇宙 更新时间:2023-11-03 23:48:11 25 4
gpt4 key购买 nike

我正在尝试为我的应用程序创建报告功能

在前端我发出一个 put 请求:

.put(`http://localhost:3000/api/posts/report`, {
params: {
id: mongoId,
reportInfo: {
reported: true,
reportingUser: id
}
}
})

到此后端路由

router.put('/report', (req, res, next) => {
postModel.findOneAndUpdate(
{ _id: mongoose.Types.ObjectId(req.query.id) },
req.query,
{ new: true, useFindAndModify: false },
(error, returnedDocuments) => {
if (error) return next(error);
res.json(returnedDocuments);
}
);
});

对于这个模型

const postSchema = new mongoose.Schema(
{
title: { type: String },
description: { type: String },
image: { type: String },
price: { type: String },
location: { type: String },
image: { type: Array },
author: {
type: String,
ref: 'User'
},
reportInfo: {
reported:{
type: Boolean,
default: false
},

reportingUser:{
type: String
}

}
},
{
timestamps: true
}
);

任何想法为什么它不更新reportInfo对象,如果包含一些嵌套对象,我需要做些什么吗?

谢谢

最佳答案

您的代码尝试替换整个 MongoDB 文档。尝试使用$set而不是直接传递 req.query:

{ $set: { reportInfo: req.query.reportInfo } }

我还会检查是否应该有 req.queryreq.body,因此只需打印该值即可确保它正确反序列化。

关于javascript - 如何更新嵌套的 mongo 对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60269313/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com