2016-10-04 125 views
0

更新對象我有一個模式,看起來像這樣:如何貓鼬

var userSchema = mongoose.Schema({ 
    facebook   : { 
     id   : String, 
     token  : String, 
     email  : String, 
     name   : String 
    }, 
    twitter   : { 
     id   : String, 
     token  : String, 
     displayName : String, 
     username  : String 
    }, 
    google   : { 
     id   : String, 
     token  : String, 
     refreshToken : String, 
     email  : String, 
     name   : String 
    }, 
    slack   : { 
     id   : String, 
     token  : String, 
     teamId  : String, 
     name   : String 
    } 

}); 

,我想更新給予refreshToken谷歌的訪問令牌。我怎麼能做到這一點?

我試過,但它似乎沒有工作

 UserModel.update(
       { 'google.refreshToken': refreshToken }, 
       {token: 'asdf'}, 
       {multi: false}, 
       function (err, raw) { 
        if (err) { 
         console.log('Error log: ' + err) 
        } else { 
         console.log("Token updated: " + raw); 
        } 
       } 
     ); 

回答

1

我想你已經得到它倒過來:

UserModel.update(
    { "google.refreshToken": refreshToken }, 
    { "$set": { "google.token": "asdf" } }, 
    function (err, raw) { 
     if (err) { 
      console.log('Error log: ' + err) 
     } else { 
      console.log("Token updated: " + raw); 
     } 
    } 
); 
+0

是$設置強制這裏?在官方文檔上我找不到關於它的東西。 http://mongoosejs.com/docs/api.html#model_Model.update – Manos

+0

不,它不是強制性的。 – chridam