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}})
しかし、それは機能しません。これを行う方法について何かアイデアはありますか?
プログラムで$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
}});