Golang mongodb驱动程序错误模式验证

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("

我正在用golang编写一个小的RESTAPI,我一直在使用mongodb的错误验证

让我解释一下:

我的验证模式(简化)

所以在我的验证模式中,我需要用户名,并给它一个描述来处理错误(我从文档中了解)

但是使用我的创建用户func:

// 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"
}