내가 하위 문서로 스키마를 (현재 버전 사용) 몽구스 있습니다몽구스 : 제거 하위 문서의 내용
var mySchema = new Schema({
subdocument: { property1: { type: String } }
});
var myModel = mongoose.model('My-Model', mySchema);
가 지금은 기존 문서를 업데이트하는 등 doc.subdocument = {}
를 사용하여 같은 subdocument
을 제거하기 위해 노력하고있어 :
doc.save
에서
new myModel({ name: 'test', subdocument: { property1: 'test' }}).save(function(err, doc) {
console.log('saved doc:\n', doc);
doc.subdocument = {}; // remove content of subdocument
doc.save(function(err, doc) {
console.log('updated doc:\n', doc); // subdocument: null
myModel.findById(doc._id, function(err, doc) {
console.log('retrieved doc:\n', doc); // subdocument: { property1: 'test' }
mongoose.disconnect();
});
});
});
콜백 가 subdocument: null
로 문서를 반환, 그래서 가정, 업데이트가했다. 그러나 데이터베이스를 검사 할 때 subdocument
의 내용은 그대로 있습니다. 위의 샘플 코드에서 문서를 다시 검색 할 때이 내용을 볼 수 있습니다.
{ subdocument: { property1: 'test' }, __v: 0, _id: 57593a8130f2f7b6a12886b1 }
는이 버그의 근본적인 오해 :
는DB를의 문서로 본다?
감사를 당신,'markModified'가 트릭을합니다! 특히 반환 된'doc' 문서에 대해 감사드립니다. 지금까지는 이것이 데이터베이스에 저장된 문서라고 순진하게 가정 했으므로 코드를 신중하게 검토해야합니다. – qqilihq
@qqilihq 편집을 참조하십시오. 유용 할 수도있는 '저장'대안을 추가했습니다. – robertklep