我有一個貓鼬的模式看起來像這樣,我能更新和查詢就好了:無法一個蒙戈文檔中更新嵌入項目(無法更新)
// Subscriber Schema
var Subscriber = new Schema({
'user': ObjectId,
'level': { type: String, enum: [ 'sub', 'poster', 'blocked' ] }, //blocked means users has opted out of list
'dateAdded': { type: Date, default: Date.now }
});
// Group Schema
var Group = new Schema({
'groupEmail': { type: String, lowercase: true, validate: [validatePresenceOf, 'an email is required'], index: { unique: true } },
'groupOwner': ObjectId,
'groupName': String,
'twitterFeed': String,
'subscribers': [Subscriber],
'createdAt': { type: Date, default: Date.now }
});
我想更新組文檔中的訂閱者,並更改其級別,然後保存更改。我能夠找到組恰好使用:
Group.findOne({ _id: req.params.groupId }, function(err, g)
一旦我有了組,我想找到一個訂戶,以便我可以更新它。如果我嘗試:
g.subscribers.update({ 'user': req.params.userId }, { level: newStatus });
我得到:
TypeError: Object { user: 4fc53a71163006ed0f000002,
level: 'sub',
_id: 4fd8fa225904a5451c000006,
dateAdded: Wed, 13 Jun 2012 20:37:54 GMT },{ user: 4fda25ac00cd9bdc4f000004,
level: 'sub',
_id: 4fda270bbce9f8d058000005,
dateAdded: Thu, 14 Jun 2012 18:01:47 GMT },{ user: 4fda2a634499dfd16e00000d,
level: 'sub',
_id: 4fda2a634499dfd16e00000e,
dateAdded: Thu, 14 Jun 2012 18:16:03 GMT } has no method 'update'
我嘗試更新的各種排列,查找等,但總是能得到「沒有法」的錯誤。我究竟做錯了什麼?有沒有不同的方式我應該更新Subscriber.level?
謝謝!
沒有快樂。編譯「意外」錯誤。與subscribers.user和subscribers.level「當我嘗試上述,如果我把這兩個引號我得到:'MongoError:不能追加到數組使用字符串字段名稱[級別]' – pat