2015-01-04 4 views
0

Допустим, у меня есть этотНевозможно обновить элементы, которые находятся внутри массива

userinfo={ 
    userDetails: 
    { 
     username:"", 
     password:"", 
     cookie:"", 
     firstname:"", 
     lastname:"", 
     phonenumber:"", 
     postalcode:"", 
     country:"" 
    }, 
    applicationsInfo:[ 
     { 
      application:"", 
      consumerKey:"", 
      accessToken:"" 
     } 
    ] 
} 

Сначала я создал пользователя, и последний я должен обновить раздел applicationsInfo, когда пользователь создает приложение. Сначала я пробовал этот путь, и он работает

var consumerKey="asdyfsatfdtyafydsahyadsy"; 
var findCon={"userDetails.username":"someName"}; 
db.find(findCon,function(err,docs){ 
    if(err){ 
     console.log(err); 
    }else{ 
     var updateCon={$set:{"applicationsInfo.0.consumerKey":consumerKey}}; 
     db.update(findCon,updateCon,{},function(err,docs){ 
      console.log(docs); 
     }); 
    } 
}); 

Но на самом деле то, что я хочу, это обновление некоторых выбранных мной, я пробовал это таким образом.

........ 
var appNum=0; 
var updateCon={$set:{"applicationsInfo."+appNum+".consumerKey":consumerKey}}; 

Затем я запускаю свой сервер узлов, после чего у меня возникла ошибка.

/home/jobs/nodeserver/routes/initusers.js:180 
      "applicationsInfo."+appNum+ 
           ^
      SyntaxError: Unexpected token + 
        at Module._compile (module.js:439:25) 
        at Object.Module._extensions..js (module.js:474:10) 
        at Module.load (module.js:356:32) 
        at Function.Module._load (module.js:312:12) 
        at Module.require (module.js:364:17) 
        at require (module.js:380:17) 

ответ

1

Вы должны установить его ниже способом:

var appNum = 0; 
var updateCon = {$set:{}}; 
updateCon.$set["applicationsInfo."+appNum+".consumerKey"] = 1; 

Настройка выражение ("applicationsInfo."+appNum+".consumerKey") в качестве ключа объекта во время инициализации не допускается в Java Script.

+0

Большое вам спасибо: – GPrathap

+0

@ user1574779 Добро пожаловать. Пожалуйста, примите ответ, если он решит вашу проблему. – BatScream

Смежные вопросы