猿问

使用 mongodb 更新哈希密码

我正在尝试更新我的用户文档以更改密码,但是当我将 bcrypt 哈希密码传递为时,mongodb 会忽略字段密码$2a$10$lnTLIgnOWuoolOkqBfzcd.0pNLFtstX20p8KJNQmKkL.6D.W7Zu0a


如果我删除第一个$工作。


我的更新功能


func (r Repo) Update(id string, updUsr interface{}) (User, error) {

    // uid work


    filter := bson.M{"_id": bson.M{"$eq": uid}, "deleted_at": nil}

    update := []bson.D{

        {primitive.E{

            Key:   "$set",

            Value: updUsr,

        }},

        {primitive.E{

            Key: "$addFields",

            Value: bson.D{primitive.E{

                Key:   "modified_at",

                Value: time.Now(),

            }},

        }},

    }


    res := r.col.FindOneAndUpdate(

        r.ctx,

        filter,

        update,

    )

    if res.Err() != nil {

        // err

    }


    // decode work


    return u, nil

}

我的更新函数调用


// doesn't work

updPwd := password{

    Password: "$2a$10$lnTLIgnOWuoolOkqBfzcd.0pNLFtstX20p8KJNQmKkL.6D.W7Zu0a",

}


// working version 

updPwd := password{

    Password: "2a$10$lnTLIgnOWuoolOkqBfzcd.0pNLFtstX20p8KJNQmKkL.6D.W7Zu0a",

}


_, err = us.Update(uid, updPwd)

if err != nil {

    // err

}

我不知道如何将我的哈希变量传递给 mongodb,实际上只是删除了我的密码密钥,因为我处理的密码是一个空值,如果我删除了第一个$标志,我的更新就成功了。


撒科打诨
浏览 170回答 1
1回答

开满天机

在更新操作中,以美元符号开头的字符串值$被视为变量引用并替换为相应的值。您可能需要使用$literal运算符将该字符串视为值而不是变量。
随时随地看视频慕课网APP

相关分类

Go
我要回答