我一如既往地陷入了困境,似乎在node项目中经常会遇到这种情况。我不确定是我做错了什么还是遇到了一个bug。
我的Server架构可以有任意数量的嵌套文档称为services。然而,我遇到了一个问题,即使我已经成功地从server对象中删除了单个服务,当我告诉它保存时,它并没有从数据库中删除。保存函数正常工作,因为它保存了我所做的所有更改,并推入新的嵌入式文档,只是没有移除已经存在的文档。
这里是我的代码的一个相对简化的示例:
我的Server架构可以有任意数量的嵌套文档称为services。然而,我遇到了一个问题,即使我已经成功地从server对象中删除了单个服务,当我告诉它保存时,它并没有从数据库中删除。保存函数正常工作,因为它保存了我所做的所有更改,并推入新的嵌入式文档,只是没有移除已经存在的文档。
这里是我的代码的一个相对简化的示例:
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