【发布时间】:2022-04-29 15:21:45
【问题描述】:
如何从猫鼬的内部架构中删除对象? 我尝试从假日模式中删除 cmets,这是假日模式:
const holidaySchema = new mongoose.Schema(
{
comments: [commentSchema],
},
)
const Holiday = mongoose.model("Holiday", holidaySchema);
export default Holiday;
这是 cmets 架构:
const commentSchema = new mongoose.Schema(
{
action: { type: String },
time: { type: String },
name: { type: String },
image: { type: String },
content: { type: String },
rating: { type: Number },
},
{
timestamps: true,
}
);
我尝试以这种方式从 holidaySchema 中删除特定评论:
holidayRouter.delete(
"/:id/comments/:commentId",
isAuth,
expressAsyncHandler(async (req, res) => {
const holiday = await Holiday.updateOne(
{ _id: req.params.id },
{ $pull: { comments: { _id: req.params.commentId } } }
);
if(holiday){
console.log(holiday);
}
})
);
控制台:
这不起作用,你知道我做错了什么或者我应该怎么做吗?
谢谢
【问题讨论】:
-
查询看起来不错,请确保您有该 ids 文档在集合中,假期中的控制台是什么?
-
控制台显示一个待处理的promise,你能找到问题吗? link
-
显然它会显示挂起,因为您没有在 api 中返回任何响应,我正在谈论这个
console.log(holiday);,您可以在运行的节点服务器控制台中看到它。 -
那我应该返回那里?
-
看到
nModified: 1的时候其实已经删除了,你的记录已经更新了。您可以检查数据库。
标签: mongodb mongoose mongodb-query mongoose-schema