Я почесываю голову здесь, как обычно, как это бывает с проектами узлов, и я не уверен, что делаю что-то не так или столкнулся с ошибкой.
У меня есть схема сервера, которая может иметь любое количество встроенных документов, называемых сервисами.Однако я сталкиваюсь с проблемой, когда, несмотря на то, что я успешно удалил отдельную службу из объекта сервера, когда я говорю, что она сохраняется, она не удаляется из базы данных.Функция сохранения работает, потому что она сохраняет все сделанные мной изменения, а также добавляет новые встроенные документы, просто не удаляя те, которые уже есть.
Вот сравнительно упрощенный пример моего кода:
app.put('/server/:id', function(req, res, next){
app.Server.findOne({_id: req.params.id}, function(err, server) {
server.updated = new Date();
...
for (var num = _.size(req.body.server.services) - 1; num >= 0; num--){
// Is this a new service or an existing one
if (server.services[num]) {
// Is it marked for deletion? If so, delete it
if (req.body.server.services[num].delete == "true") {
server.services[num].remove()
} else { // else, update it
server.services[num].type = req.body.server.services[num].type
...
}
} else {
// It's new, add it
delete req.body.server.services[num]["delete"]
server.services.push(req.body.server.services[num]);
}
}
server.save(function(err){
if (!err) {
req.flash('success', 'Server updated')
} else {
req.flash('error', 'Err, Something broke when we tried to save your server. Sorry!')
console.log(err)
}
res.redirect('/')
});
})
});
Таким образом, remove () фактически удаляет службу.Если я сделаю server.toObject () перед сохранением, его там нет.Любые идеи, почему он не будет удалять его из базы данных при сохранении?
Редактировать: Я полагаю, номера версий будут полезны.node@0.4.2, mongoose@1.1.5 express@2.0.0rc