一尘不染

我可以将gorilla模式与sql.NullString一起使用吗?

go

我正在使用大猩猩架构根据用户的表单提交来填充结构。我的结构包含,sql.NullString并且我目前收到以下错误:

schema: converter not found for sql.NullString

如何sql.NullString在要使用大猩猩架构填充的结构中使用?


阅读 228

收藏
2020-07-02

共1个答案

一尘不染

我创建了一个要点(https://gist.github.com/carbocation/51b55297702c7d30d3ef),它显示了解决此问题的一种方法。您需要为schema.Converter以下四种类型的每一种创建一个:sql.NullString,sql.NullBool,sql.NullInt64和sql.NullFloat64。

sql.NullString的示例:

import "database/sql"
import "reflect"

func ConvertSQLNullString(value string) reflect.Value {
    v := sql.NullString{}
    if err := v.Scan(value); err != nil {
        return reflect.Value{}
    }

    return reflect.ValueOf(v)
}

然后使用您的*schema.Decoder(通常是全局软件包,在本例中为d)注册此文件:

import "database/sql"

nullString := sql.NullString{}
d.RegisterConverter(nullString, ConvertSQLNullString)
2020-07-02