나는 여기에 내 머리를 긁적니다. 노드 프로젝트에서는 평소와 같이 보이고, 뭔가 잘못하고 있는지, 버그가 있는지 잘 모르겠습니다.몽구스는 임베디드 문서를 제거하지 않을 것입니다.
나는 서비스라는 임베디드 워드 프로세서를 여러 개 가질 수있는 서버 스키마를 가지고 있습니다. 문제가 생기고 있지만 서버 객체에서 개별 서비스를 성공적으로 제거 했더라도 저장하라는 메시지가 데이터베이스에서 제거되지는 않습니다. 저장 기능은 내가 한 모든 변경 사항을 저장하고 새로운 임베디드 문서를 푸시하기 때문에 작동합니다. 이미 존재하는 문서를 제거하지 않고 있기 때문입니다.
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('/')
});
})
});
그래서 제거()가 실제로 서비스를 제거한다 :
여기 내 코드의 비교적 간단한 예이다. 저장하기 전에 server.toObject()를 수행하면 거기에 없습니다. 저장시 데이터베이스에서 제거하지 않는 이유는 무엇입니까?
편집 : 버전 번호가 도움이 될 것이라고 생각합니다. [email protected], [email protected] [email protected]
동일한 문제가 있습니다. – Carlosedp