如何在mongoose中更新对象

时间:2016-10-04 11:43:41

标签: node.js mongodb mongoose mongodb-update

我的架构看起来像这样:

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

1 个答案:

答案 0 :(得分: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);
        }
    }
);