2

I am using gorilla schema to populate a struct based on a user's form submission. My struct contains sql.NullString and I am currently getting the following error:

schema: converter not found for sql.NullString

How can I use sql.NullString in a struct that I want to populate with gorilla schema?

4

1 回答 1

4

我创建了一个要点(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)
于 2015-01-02T15:32:06.927 回答