【问题标题】:Set data in array of array using mongoose使用猫鼬在数组数组中设置数据
【发布时间】:2016-12-13 02:19:56
【问题描述】:

我有这样的User 对象:

{
    "_id": "584d91ff6c751769fab91be5",
    "username": "svit",
    "name": "Ilya",
    "role": "user",
    "authData": [
        {
            "fb": {
                "access_token": "susdfg",
                "expiration_date": 1,
                "id": "1187410264678321"
            }
        }
    ],
    "__v": 9,
    "currentToken": "9735f44f1c4371f143747ff670b0076148053f391ab866bafab7c6eaf47d295b"
}

我有兴趣更新User.authData.fb。我试过了:

var curUser = userModel.findOne({_id: user._id}, function(err, curUser){

        curUser['authData'][socialType] = {
            access_token: socialToken,
            expiration_date:  173249700 //TODO: normal date 
        };

        curUser.set('currentToken', tokenName);

        curUser.markModified('authData');
        curUser.save();
    });

但这无济于事。它修改currentToken,但不修改authData。

另外,我试过curUser.set('authData.fb.expiration_date", 173249700) 那也不行。

我真的需要你的帮助! 此致, 伊利亚

【问题讨论】:

    标签: javascript arrays node.js mongodb mongoose


    【解决方案1】:

    您可以遍历“authData”数组并修改您可能喜欢的任何值。我假设 authData 是一个 socialTypes 数组,它有一个属性名称来识别。 示例:

    var curUser = userModel.findOne({_id: user._id}, function(err, curUser){
            curUser.authData.map(socialType => {
            // Select the type of socialAuth you want to modify
             if(socialType.name === 'fb') {
                access_token: socialToken,
                expiration_date:  173249700 //TODO: normal date 
              } 
            })
    
            curUser.set('currentToken', tokenName);
    
            curUser.markModified('authData');
            curUser.save();
        });
    

    【讨论】:

      猜你喜欢
      • 2021-10-17
      • 1970-01-01
      • 2022-01-11
      • 1970-01-01
      • 2015-12-27
      • 2017-07-23
      • 1970-01-01
      • 2017-06-13
      • 2020-01-30
      相关资源
      最近更新 更多