Golang mongodb驱动程序错误模式验证
我正在用golang编写一个小的RESTAPI,我一直在使用mongodb的错误验证 让我解释一下: 我的验证模式(简化) 所以在我的验证模式中,我需要用户名,并给它一个描述来处理错误(我从文档中了解) 但是使用我的创建用户func:Golang mongodb驱动程序错误模式验证,mongodb,validation,go,Mongodb,Validation,Go,我正在用golang编写一个小的RESTAPI,我一直在使用mongodb的错误验证 让我解释一下: 我的验证模式(简化) 所以在我的验证模式中,我需要用户名,并给它一个描述来处理错误(我从文档中了解) 但是使用我的创建用户func: // Create user to repo func (r *Repo) Create(usr *User) { if r.err != nil { return } u := r.db.Collection("
// Create user to repo
func (r *Repo) Create(usr *User) {
if r.err != nil {
return
}
u := r.db.Collection("users")
_, err := u.InsertOne(r.ctx, usr)
if err != nil {
we, ok := err.(mongo.WriteException)
if ok {
fmt.Println(we)
for _, r := range we.WriteErrors {
fmt.Println(r)
}
}
r.err = fmt.Errorf("error occured during creating. got=%w", err)
return
}
}
和我的用户结构
// User structure representation
type User struct {
ID primitive.ObjectID `bson:"_id"`
Lastname string `bson:"lastname"`
}
来自post http请求的我的json正文
{
"something": "xxxx"
}
预期错误:
类似于(例如我预期的错误):
我从我的错误中得到:
多个写入错误:[{写入错误:[{文档验证失败}]},{}]
从我的错误转换为WriteException:
文档验证失败
我读
description N/A string描述架构且无效的字符串。
但对验证没有效果,或者只是作为一个注释供阅读模式的人使用
我想让我的描述我的错误显示到我的http响应!
也许我管理它的方式不对,所以我可以重写它
感谢阅读我的文章,希望有人能帮我:)
祝您愉快当前(MongoDB v4.4),MongoDB服务器不会返回文档验证失败的原因。跟踪这项工作还有一个悬而未决的问题。请随时观看或投票,以接收进度更新
您应该实现应用程序级输入验证。确保在插入数据库之前输入的数据类型正确。是的,谢谢,我在插入数据库之前进行了结构验证。我会关注这个问题
{
"something": "xxxx"
}
{
"field": "lastname",
"message": "must be a string and is required"
}