Я создаю приложение, в котором создается задание, и идентификатор этого задания добавляется в другую коллекцию (клиент), чтобы на задание можно было ссылаться из самого клиента. До сих пор мне удалось добавить идентификатор задания в коллекцию клиента, но мне сложно понять, как удалить идентификатор задания из коллекции клиента, если задание удалено. Это связано с тем, что идентификатор хранится как подколлекция внутри клиента. Код, который я пытаюсь заставить работать, приведен ниже:
// delete
app.delete("/jobs/:id", function(req, res){
Client.find({jobs._id: req.params.id}, function (err, foundClient){ //This part doesn't work
if (err) {
console.log(err);
} else {
// Add id identifier to Client
foundClient.jobs.pull(req.params.id);
foundClient.save();
}
});
// Delete Job
Job.findByIdAndRemove(req.params.id, function(err, deletedJob){
if (err){
console.log(err)
} else {
// Redirect
res.redirect("/jobs");
}
});
});
Я пытаюсь заставить работать logi c этой части:
Client.find({jobs._id: req.params.id},
Вот клиент Схема
// =======================Client Schema
var clientSchema = new mongoose.Schema({
organization_name: String,
first_name: String,
middle_name: String,
last_name: String,
email_address: String,
phone_number: String,
street: String,
city: String,
state: String,
zip: String,
description: String,
active: {type: Boolean, deafult: true},
date_added: {type: Date, default: Date.now},
transactions: [{type: mongoose.Schema.Types.ObjectID, ref: "Transaction"}],
jobs: [{type: mongoose.Schema.Types.ObjectID, ref: "Job"}]
});
module.exports = mongoose.model("Client", clientSchema);
По сути, то, что я пытаюсь сказать ему, это найти клиента, у которого массив заданий клиента содержит идентификатор, равный идентификатору удаляемого задания. Конечно, этот синтаксис неверен, поэтому он не работает. Мне не удалось найти документацию, объясняющую, как я могу это сделать. Есть ли более простой способ сделать это, как я пишу здесь? Я знаю, что могу запросить БД таким образом, если само задание не было массивом и содержало только одну сингулярную переменную. Есть ли способ сделать это или мне нужно написать полностью отдельную функцию цикла, чтобы это работало? Спасибо.