我可以使用带有 sql.NullString 的大猩猩架构吗?
Can I use gorilla schema with an sql.NullString?
我正在使用大猩猩模式根据用户提交的表单填充结构。我的结构包含 sql.NullString
,我目前收到以下错误:
schema: converter not found for sql.NullString
如何在要使用大猩猩模式填充的结构中使用 sql.NullString
?
我创建了一个要点 ( 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)
我正在使用大猩猩模式根据用户提交的表单填充结构。我的结构包含 sql.NullString
,我目前收到以下错误:
schema: converter not found for sql.NullString
如何在要使用大猩猩模式填充的结构中使用 sql.NullString
?
我创建了一个要点 ( 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)