这是json对象的结构,位于一个名为campaignResponse的字段中。
campaignResponse:
{ prop:
{ summary: 't',
retailer: '4',
sent: 't',
queued: 'f',
open: 'f',
spam: 't',
click: 't',
blocked: 'f',
bounce: 'f',
unsub: 'f',
To: 'kartooot@gmail.com',
status: 'clicked',
subject: '',
messageid: '20829150339986762',
From: '',
details: '',
date: '2017-04-03T12:51:38' },
camp2:
{ date: '2017-04-03T12:51:38',
details: '',
From: '',
messageid: '20829150339986762',
subject: '',
status: 'clicked',
To: 'kartooot@gmail.com',
unsub: 'f',
bounce: 'f',
blocked: 'f',
click: 't',
spam: 'f',
open: 't',
queued: 'f',
sent: 't',
retailer: '4',
summary: 'f' },
camp1:
{ date: '2017-04-03T12:51:38',
details: '',
From: '',
messageid: '20829150339986762',
subject: '',
status: 'clicked',
To: 'kartooot@gmail.com',
unsub: 'f',
bounce: 'f',
blocked: 'f',
click: 't',
spam: 't',
open: 'f',
queued: 'f',
sent: 't',
retailer: '4',
summary: 'f' } }
我想更新道具,camp1,camp2。我想通过变量传递它。所以在某个时刻variable = camp1
。我想将campaignResponse.variable设置为obj。但我收到一个语法错误,说“意外的令牌。”。
User.findOneAndUpdate({email: res[i].email},{$set: {campaignSummary: temp, campaignResponse.varialble: obj}},{new: true},function(err ,result2){
if(err)
callback(err);
else{
console.log(result2);
callback(err,result2);
}
})
请帮帮我这里的人。甚至建议更好的方法来做到这一点将不胜感激。 感谢。
答案 0 :(得分:1)
对不起,我错过了关于它充满活力的部分......
应该是
var $set = {campaignSummary: temp};
$set["campaignResponse."+varialble] = obj;
User.findOneAndUpdate({email: res[i].email},{$set:$set},{new: true},function(err ,result2){
if(err)
callback(err);
else{
console.log(result2);
callback(err,result2);
}
})
当你使用来自变量的密钥时,你想要的是使用它来连接最终的字符串,然后在[]语法中使用它来定义正确的属性名称。