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

Using a dynamic variable to access another variable's value in Meteor?

本文关键字:变量 另一个 访问 动态 Meteor      更新时间:2023-09-26

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

然而,我在这个问题上遇到了一堵墙,因为我的JavaScript知识显然缺乏。我有一个购买各种单位类型的方法调用。我想在训练更高级的citizen.workerssoldier.specific之前检查玩家是否有足够的特定类型的单位citizenssoldiers。递增更高级的类型还不是我要解决的问题;我只是想确定基本单位是否以最小数量存在。

我目前使用的不起作用。类型变量不是在计算,而是在我希望它默认为"公民"时作为"类型"进行。我在 2 个地方使用该变量,if 语句用于评估目的,并在数据库更新中减少该特定字段的数量。

当前代码:

'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的默认值。我已经在我的代码中修改了它。大卫·韦尔登(David Weldon)回答的计算值是我更具体地追求的。

通过以下方式更改代码:

player[type] >= number

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

后者是 es6 中新增的计算属性键的示例。

另请参阅常见错误的"变量作为键"部分。