如何更新猫鼬中的对象

How to update object in mongoose

我的架构如下所示:

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 更新 google 的访问令牌。我怎样才能做到这一点?

我试过了,但似乎不起作用

       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);
                    }
                }
        );

我认为你的理解恰恰相反:

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);
        }
    }
);