저는 몽구스 API와 SO 및 Google 그룹에 대한 많은 질문을 검토 한 결과 임베디드 문서를 업데이트 할 수 없습니다.몽구스에 포함 된 문서를 업데이트하는 방법은 무엇입니까?
이 특정 userListings 객체를 args의 내용으로 업데이트하려고합니다. 여기
for (var i = 0; i < req.user.userListings.length; i++) {
if (req.user.userListings[i].listingId == req.params.listingId) {
User.update({
_id: req.user._id,
'userListings._id': req.user.userListings[i]._id
}, {
'userListings.isRead': args.isRead,
'userListings.isFavorite': args.isFavorite,
'userListings.isArchived': args.isArchived
}, function(err, user) {
res.send(user);
});
}
}
는 스키마 있습니다 :
var userListingSchema = new mongoose.Schema({
listingId: ObjectId,
isRead: {
type: Boolean,
default: true
},
isFavorite: {
type: Boolean,
default: false
},
isArchived: {
type: Boolean,
default: false
}
});
var userSchema = new mongoose.Schema({
userListings: [userListingSchema]
});
이 아마도 첫 번째 문제이다 작동하지 않습니다 또한 찾을 수 :
User.find({
'_id': req.user._id,
'userListings._id': req.user.userListings[i]._id
}, function(err, user) {
console.log(err ? err : user);
});
반환
{ stack: [Getter/Setter],
arguments: [ 'path', undefined ],
type: 'non_object_property_call',
message: [Getter/Setter] }
이것은 th와 동일해야합니다. 몽고 클라이언트 호출은 다음과 같습니다
실행db.users.find({'userListings._id': ObjectId("4e44850101fde3a3f3000002"), _id: ObjectId("4e4483912bb87f8ef2000212")})
:
mongoose v1.8.1
mongoose-auth v0.0.11
node v0.4.10
나는 형식 오류 "를 얻고 것은 이것이
' " – FrederickCook
몽구스 인증 문제입니까? 그것이 req.user가 할당 된 곳입니다. – FrederickCook
mongoose docu는 다음과 같이 말합니다. "DocumentArrays에는 임베디드 문서를 _id 속성으로 필터링하는 특수 메서드 ID가 있습니다 (각각의 포함 된 문서는 하나를 가져옵니다)". 하지만 나 자신이 이것을 시도하지 않았습니다. – pkyeck