"연락처"라는 하위 문서가 포함 된 mongoose로 사용자 스키마를 설정했습니다. 하위 문서 "연락처"는 실제 연락처 (다른 사용자 개체에 대한 참조)와 "우정"과 관련된 일부 데이터가 포함 된 연락처 개체의 모음입니다.몽구스 : 하위 문서 배열을 대체하려면 어떻게해야합니까?
내 프런트 엔드 응용 프로그램에서 사용자를 내 연락처 목록에 추가하거나 제거하여 연락처를 관리 할 수 있습니다. 프런트 엔드는 이러한 변경 사항을 HTTP PUT 요청으로 서버에 저장합니다.
PUT 요청에는 데이터베이스에서 사용자 개체를 대체하는 전체 사용자 개체가 포함되어 있습니다. 불행히도 하위 모음 컬렉션을 대체 할 수 없습니다. 새로운 것을 밀어 내거나 제거 할 수 있습니다.
var UserSchema = new Mongoose.Schema({
username: {
type: String,
index: { unique: true, sparse: true },
required: true, lowercase: true, trim: true
},
email: {
type: String,
index: { unique: true, sparse: true },
required: true, lowercase: true, trim: true
},
contacts: [ContactSchema]
});
var ContactSchema = new Mongoose.Schema({
user: {
ref: "User",
type: Mongoose.Schema.ObjectId
},
isContact: {
type: Boolean,
default: true
}
});
은 현재 내가 모두를 제거하고 요청에 하나를 추가하여 연락처를 교체하려고 : 여기
는 스키마입니다app.put('/me', loadUser, function(req, res, next) {
var user = req.user;
req.user.contacts.forEach(function(contact) {
req.body.contacts.forEach(function(contact) {
contact.remove();
});
});
req.body.contacts.forEach(function(contact) {
req.user.contacts.push(contact);
});
user.save(function(err, user) {
if (err) return next(err);
res.send(200);
});
});
어떻게 내가 할 수있는 사람이 실제로 더 나은 아이디어를 가지고 이 하위 문서 컬렉션을 요청의 상태로 업데이트 하시겠습니까?
전체 개체가 몽고하기 : 당신은 객체 배열로 작업하여 MongoDB에 그냥 힌트
는, 당신은 모든 값을 간단하게 교체 할 수 있습니까? 동일한 문서를 동일한 '_id'로 바꾸려면 덮어 써야합니다. –