0

そのため、健全性を保つためにコードをよりモジュール化しようとしています (また、同じコードを 5 つ以上の異なる方法で記述するよりも効率的と思われるため)。

ただ、JavaScriptの知識が不足しているようで、壁にぶつかっています。さまざまなユニット タイプを購入するためのメソッド呼び出しがあります。プレーヤーが特定のタイプのユニットを十分に持っていること、citizensまたはsoldiersより高度なタイプのユニットをトレーニングする前に確認したい . より高度な型をインクリメントすることは、まだ取り組んでいる問題ではありません。基本ユニットが最小量で存在するかどうかを判断しようとしているだけです。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 のデフォルト値を間違って使用していることに気付きました。私は自分のコードでそれを変更しました。David Weldon が回答した計算値は、私がより具体的に求めていたものです。

4

1 に答える 1

1

次の方法でコードを変更します。

player[type] >= number

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

後者は、es6 で新しく追加された計算されたプロパティ キーの例です。

よくある間違いの「キーとしての変数」セクションも参照してください。

于 2016-01-15T03:42:04.727 に答える