Javascript:如何通过在字符串中指定字段来创建对象?
我正在尝试更新MongoDB文档中的值。文档有许多字段,但我只想根据我在UI中更改的字段指定其中的几个字段Javascript:如何通过在字符串中指定字段来创建对象?,javascript,node.js,mongodb,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: {
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}
)
不幸的是,上面的代码没有将yearField
、monthField
和triField
的值“eval”到它们的字符串值,而是试图更新,就好像文档中存在这些字段一样
我知道我可以找到文档,修改值,然后一个一个地保存它们,但是有没有办法做到我想做的事情呢?在一个更新行中进行更新要好得多 由于您使用的是node.js,只需将名称用括号括起来,就可以使用:
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中受支持。您使用的JavaScript运行时环境是什么?如果您想知道的话,我使用的是node.js。您在这里不是在处理JSON。JSON始终是一个字符串,除此之外没有其他内容(该字符串的内容看起来像Javascript,但事实并非如此)。您在这里处理的只是本机对象,即object literals.Perfect。非常感谢。这相当于在angular中使用{{}?@RicardoMota不知道-我不是一个有棱角的人:)足够公平:)只要系统允许,我会接受你的答案。