簡體   English   中英

儀表將新對象推送到集合中的數組

[英]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數組的autoValueautoValue進行初始化。 添加第一個播放器時可能會出現問題嗎?

一些幫助,將不勝感激。

編輯: @ 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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM