【发布时间】:2021-01-13 21:19:41
【问题描述】:
我正在尝试更新我的用户文档以更改密码,但是当我将 bcrypt 哈希密码作为 $2a$10$lnTLIgnOWuoolOkqBfzcd.0pNLFtstX20p8KJNQmKkL.6D.W7Zu0a 传递时,mongodb 会忽略字段密码
如果我删除第一个 $ 就可以了。
我的更新函数
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 实际上只是删除我的密码密钥,因为我像密码一样处理是一个空值,如果我删除第一个 $ 标志我的更新是成功的。
感谢每条评论!
谢谢
【问题讨论】:
-
发布更新失败返回的错误。
-
@OptimusPette 我没有错误,只需在您更新密码时从我的文档中删除我的密钥密码:“”
标签: mongodb go mongodb-query aggregation-framework