27

Meteorを使用して、次のような更新を実行しようとしています。

Items.update(Session.get('selectedItem'), {'$set': {'directions.0.name': area.value}})

しかし、次のような方法で、方向の配列インデックスを動的に設定する方法に苦労しています。

var index = //a value determined dynamically
Items.update(Session.get('selectedItem'), {'$set': {'directions[index]name': area.value}})

[index]は文字列でラップされているため、これは機能しません。また、次のようなカスタム文字列を作成しようとしました。

var string = 'directions.'+itemIndex+'.name'
Items.update(Session.get('selectedItem'), {'$set': {string: area.value}})

しかし、それはうまくいきません。これを行う方法について何かアイデアはありますか?

4

1 に答える 1

59

$setプログラムでオブジェクトを作成する必要があります。

var setModifier = { $set: {} };
setModifier.$set['directions.' + index + '.name'] = area.value;
Items.update(Session.get('selectedItem'), setModifier);

アップデート

JavaScript環境が計算されたプロパティ名(たとえば、node.js 4+)をサポートしている場合、これを1つのステップで実行できます。

Items.update(Session.get('selectedItem'), { $set: {
    ['directions.' + index + '.name']: area.value
}});
于 2012-09-12T17:30:09.890 に答える