0
토런트 항목이 있고 하위 사용자에게 저장된 사용자 주석에 '_replies'라는 이름의 하위 문서 배열이 있으며 모든 주석에도 저장된 사용자 응답에 '_replies'라는 하위 문서 배열이 포함되어 있습니다.mongoose 다중 레벨 하위 문서를 수정 한 다음 정상적으로 저장하지 않음
var CommentSchema = new Schema({
user: {
type: Schema.Types.ObjectId,
ref: 'User'
},
comment: {
type: String,
default: '',
trim: true
},
_replies: [this],
createdat: {
type: Date,
default: Date.now
},
editedby: {
type: String,
default: '',
trim: true
},
editedat: {
type: Date,
default: ''
}
});
var TorrentSchema = new Schema({
user: {
type: Schema.Types.ObjectId,
ref: 'User'
},
torrent_filename: {
type: String,
default: '',
trim: true,
required: 'filename cannot be blank'
},
torrent_title: {
type: String,
default: '',
trim: true,
required: 'title cannot be blank'
},
_replies: [CommentSchema]
});
mongoose.model('Torrent', TorrentSchema);
mongoose.model('Comment', CommentSchema);
토런트 업데이트의 첫 번째 수준의 댓글/미세 삭제, 서버 컨트롤러의 코드는 아래 추천했습니다 : : 모든 스키마 정의
exports.update = function (req, res) {
var torrent = req.torrent;
torrent._replies.forEach(function (r) {
if (r._id.equals(req.params.commentId)) {
r.comment = req.body.comment;
r.editedat = Date.now();
r.editedby = req.user.displayName;
torrent.save(function (err) {
if (err) {
return res.status(422).send({
message: errorHandler.getErrorMessage(err)
});
} else {
res.json(torrent); //return data is Correct, and save to mongo is Correct
}
});
}
});
};
을하지만 난 업데이트 허락 기능을 사용할 때/_replies._replies 삭제 , 응답에 Torrent의 올바른 json을 반환 할 수 있습니다. 운이 미세하지 몽고에 저장 코드 : 또한
exports.SubUpdate = function (req, res) {
var torrent = req.torrent;
torrent._replies.forEach(function (r) {
if (r._id.equals(req.params.commentId)) {
r._replies.forEach(function (s) {
if (s._id.equals(req.params.subCommentId)) {
s.comment = req.body.comment;
s.editedat = Date.now();
s.editedby = req.user.displayName;
torrent.save(function (err) {
if (err) {
return res.status(422).send({
message: errorHandler.getErrorMessage(err)
});
} else {
res.json(torrent);//return data is Correct, but save to mongo is incorrect
}
});
}
});
}
});
};
, 내가 첫 번째 수준의 코멘트를 삭제할 수 있지만 두 번째 수준의 답글을 삭제할 수 없습니다가, 토런트의 모든 JSON 데이터가 올바른지 만에 저장할 수 없습니다 몽고.
나는 무엇을 할 수 있습니까?