我在会话变量中都有游戏_id和玩家ID

  Games.insert({
      board : hex_board(7),
      players : [{id : 0, hexIds : []}, {id : 1, hexIds : []}],
  });


到目前为止,我一直坚持:

  Games.update(Session.get("game"), {$addToSet : {players : ""}});


我不知道如何进一步细化播放器列表中使用的元素,但条件在Session.get("activePlayer")中。

当密钥被硬编码为0或1时几乎可以工作,但我并没有使其依赖于activePlayer var

        Games.update(Session.get("game"), {
            $addToSet : {
                "players." + Session.get("activePlayer") + ".hexIds" : Session.get("selected_hex")
            }
        });


作为方法回答

Meteor.methods({
  addHexIds : function (hexIds, player, game) {
    Games.update({_id:game, "players.id" : player}, {
            $addToSet : {
                "players.$.hexIds" : hexIds
            }
        });
  }
});

最佳答案

也许像这样...

Games.update(
    { board : hex_board(7), "players.id": 0 },
    {
        "$addToSet": { "players.$.hexIds": "foo" }
    }
)


您可以根据需要变动

07-27 16:58