私はmongoose 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")})
実行中:Mongoのクライアント呼び出しです
mongoose v1.8.1
mongoose-auth v0.0.11
node v0.4.10
私はTypeError例外」を取得していますThat's
'" – FrederickCook
これはマングース認証の問題ですか?そこにreq.userが割り当てられています。 – FrederickCook
mongoose docuは次のように言っています: "DocumentArraysには埋め込まれたドキュメントを_idプロパティでフィルタリングする特別なメソッドIDがあります(埋め込まれた各ドキュメントには1つずつ取得されます)"。しかし、私はこれを自分で試していない。 – pkyeck