gpt4 book ai didi

node.js - 如何使用 Mongoose 删除子文档?

转载 作者:行者123 更新时间:2023-12-04 07:42:05 25 4
gpt4 key购买 nike

我有一个具有以下架构的 mongoDB:

const jobSchema = new mongoose.Schema({
companyTitle: String,
status: String,
companyURL: String,
jobTitle: String,
jobURL: String,
jobDescription: String,
contactName: String,
contactRole: String,
contactPhone: String,
contactEmail: String,
tasks: [Task.schema]
})

const taskSchema = new mongoose.Schema({
taskItem: String,
isCompleted: Boolean
})
当用户单击按钮时,job._id 和 task._id 将发送到我的服务器,应从数据库中删除特定任务。目前,该路由删除父(作业)而不是子(任务)。任何想法如何定位任务?提前致谢!
应用程序.js
app.delete('/tasks/:jobId/:taskId', (req, res) => {
const jobId = req.params.jobId
const taskId = req.params.taskId

Job.findOneAndDelete(
{'_id': jobId, 'tasks._id': taskId},
function (error, doc) {
if (error) {
console.log(error)
} else {
console.log(doc)
}
}
)
})

最佳答案

您应该使用 findOneAndUpdate而不是 findOneAndDelete .你可以像这样重构你的代码:

app.delete('/tasks/:jobId/:taskId', async (req, res) => {
const jobId = req.params.jobId
const taskId = req.params.taskId

Job.findOneAndUpdate(
{"_id": jobId },
{"$pull": {"tasks": {"_id": taskId}}},
{new:true},
function (error, doc) {
if (error) {
console.log(error)
} else {
console.log(doc)
}
}
);

})

关于node.js - 如何使用 Mongoose 删除子文档?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67409118/

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