вложенные документы мангуста
У меня есть 2 схемы, установленные в мангусте:
var Job = new mongoose.Schema({
title: String,
budget: Number
});
var JobModel = mongoose.model('Job', Job);
var Customer = new mongoose.Schema({
name: String,
jobs: [Job]
});
var CustomerModel = mongoose.model('Customer', Customer);
Модель Customer имеет множество рабочих моделей.
Я добавляю новую работу следующим образом:
app.post('/api/jobs', function(req, res){
var job = new JobModel({
title: req.body.title,
budget: req.body.budget
});
job.save(function(err){
if(!err){
CustomerModel.findById(req.body.customerId, function(err, customer){
if(!err){
customer.jobs.push(job);
customer.save(function(err){
if(!err){
return console.log('saved job to customer');
}
});
}
});
return console.log('created job');
} else {
return console.log(err);
}
});
return res.send(job);
});
Когда я добавляю новую работу и ПОЛУЧАЮ всех клиентов, я получаю то, что считаю правильным:
[{
"__v": 1,
"_id": "50f85695771aeeda08000001",
"name": "Customer1",
"jobs": [
{
"_id": "50fad6985edd968840000002",
"budget": 100,
"title": "job1"
}
]
}, ...]
Теперь, если я обновлю job1 и ПОЛУЧУ все задания, задание 1 будет обновлено (бюджет теперь составляет 500)
[{
"title": "job1",
"budget": 500,
"_id": "50fad6985edd968840000002",
"__v": 0
}, ...]
но job1 в массиве заданий клиентов остается неизменным.
[{
"__v": 1,
"_id": "50f85695771aeeda08000001",
"name": "Customer1",
"jobs": [
{
"_id": "50fad6985edd968840000002",
"budget": 100,
"title": "job1"
}
]
}, ...]
Нужно ли мне искать клиента1?s массив заданий и найти задание job1 и обновлять его также каждый раз, когда я обновляю или удаляю, или я делаю все вложения неправильно?
Я понимаю, что массив заданий в клиенте - это массив объектов, но я подумал, что они могут быть чем-то вроде справочной копии задания, а не дубликатом ??