使用动态变量访问Meteor中的另一个变量值?

时间:2016-01-15 02:49:41

标签: javascript mongodb meteor minimongo

所以我试图让我的代码更加模块化以达到理智目的(并且因为它似乎比编写相同代码5 +不同方式更有效)。

然而,由于我的JavaScript知识显然缺乏,我在这个问题上遇到了障碍。 我有一个方法要求购买各种单位类型。我想在培训更高级的citizenssoldiers之前检查播放器是否有足够的特定类型的单元citizen.workerssoldier.specific。增加更高级的类型不是我要解决的问题;我只是想确定基本单位是否以最小数量存在。

我目前使用的是不起作用。类型变量没有评估,但是当我希望它默认为“公民”时,它更像是“类型”。我在2个位置使用变量,if语句用于评估目的,在DB更新中用于减少特定字段的数量。

当前代码:

'buy': function(cost, number, type) {
  type = type || "citizens";
  var currentUser = Meteor.user();
  var player = Players.findOne({createdBy: currentUser._id});
  if(player.credits >= cost && cost > 0 && player.type >= number && number > 0) {
    Players.update({createdBy: currentUser._id}, {$inc: {'credits': (0-cost), type: (0-number)}});
    return true;
  }
  return false;
},

搜索到所有但未找到我要找的东西,甚至是我可以开始的东西,并开始将它应用到我需要的东西。任何帮助都会很棒。

编辑:是的我意识到我错误地使用了javascript的默认值。我在我的代码中对其进行了修改。大卫韦尔登回答的计算值是我更具体的目标。

1 个答案:

答案 0 :(得分:1)

通过以下方式更改您的代码:

player[type] >= number

{$inc: {'credits': (0-cost), [type]: (0-number)}}

后者是computed property key的一个例子,它是es6中的新内容。

另见'变量为键' common mistakes的一部分。