[英]Meter push new object to array in collection
我正在嘗試通過推送到集合中已經存在的數組來更新集合。
這是我嘗試運行的更新功能:
Games.update({ _id: game._id }, {
$push: { players: { name: playerName } },
});
這是我在控制台中遇到的錯誤:
update failed: MongoError: Cannot update 'players' and 'players' at the same time
相關架構:
Player = new SimpleSchema({
name: {
type: String,
label: 'name',
max: 50,
},
});
Schemas.Game = new SimpleSchema({
...
players: {
type: [Player],
label: 'Players',
autoValue: function () {
return [];
},
},
});
創建新游戲時,我使用的autoValue
用於players
數組的autoValue
來autoValue
進行初始化。 添加第一個播放器時可能會出現問題嗎?
一些幫助,將不勝感激。
編輯: @ Logiwan992嘗試使用defaultValue而不是autoValue。我相信您正在使用autoValue設置players
的值,因此它不是不確定的。 但是通過您的實現,當文檔上有更新時,autoValue將運行。
defaultValue
將在首次創建文檔時運行。 但是,如果您仍然選擇使用autoValue
,則可能還需要檢查它是否為更新,並返回undefine
。 像這樣
players: { type: [Player], label: 'Players', autoValue: function () { if (this.isUpdate) { return undefined; } return []; }, },
返回undefined將確保使用新的更新值。 我的建議雖然是使用
players: { type: [Player], label: 'Players', defaultValue: [], },
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.