Javascript:如何通过指定字符串中的字段来创建对象?

时间:2016-10-07 11:17:10

标签: javascript node.js mongodb

我正在尝试更新MongoDB文档中的值。该文档有很多字段,但我只想根据我在UI中更改的字段指定其中的一些字段。

var monthField='calendar.m'+month+'.result';
var triField='calendar.t'+trimester+'.result';
var yearField="calendar.year.result";

Objective.update({_id:{$in:objective.parents}},{
    $inc:
    {
        yearField:transaction.value,
        monthField:transaction.value,
        triField:transaction.value
    }},
    {multi:true, upsert:true}
  )

不幸的是,上面的代码并未将yearFieldmonthFieldtriField“评估”为其字符串值,而是尝试更新,就像文档中存在这些字段一样。

我知道我可以找到文件,改变价值观,然后一个一个地保存它们,但有没有办法做我想做的事情?在一个更新行中做这件事要好得多。

1 个答案:

答案 0 :(得分:5)

由于你正在使用node.js,你可以使用computed property names,只需将名字用括号括起来:

var monthField='calendar.m'+month+'.result';
var triField='calendar.t'+trimester+'.result';
var yearField="calendar.year.result";

Objective.update({_id:{$in:objective.parents}},{
    $inc:
    {
        [yearField]:transaction.value,
        [monthField]:transaction.value,
        [triField]:transaction.value
    }},
    {multi:true, upsert:true}
)

此语法已添加到ES2015中的规范中,虽然尚未普及,但在node.js中受支持。