returns 来自 gorm 数据库的结构列表返回 nil 的函数?
Function which returns list of struct from gorm database returning nil?
我正在尝试创建一个函数,它将 table 中的所有内容作为 table 所在结构的一部分输出。
func FetchAll(parameter interface{}) []interface{} {
var model interface{}
var resultArray []interface{}
db := common.GetDB()
rows, err := db.Model(parameter).Where(parameter).Rows()
if err != nil {
fmt.Print(err.Error())
return nil
}
for rows.Next() {
db.ScanRows(rows, &model)
resultArray = append(resultArray, model)
}
fmt.Println(resultArray)
return resultArray
}
用法:
c.JSON(200, FetchAll(&ProductImage{ProductID: productID}))
但输出如下:
[<nil>,<nil>,<nil>]
这是为什么?
model
的类型不能是interface{}
你可以使用var model = map[string]interface{}{}
比较容易写:
func FetchAll(parameter interface{}) []map[string]interface{} {
var resultArray []map[string]interface{}
db := common.GetDB()
err := db.Model(parameter).Where(parameter).Find(&resultArray).Error
if err != nil {
fmt.Print(err)
return nil
}
fmt.Println(resultArray)
return resultArray
}
我正在尝试创建一个函数,它将 table 中的所有内容作为 table 所在结构的一部分输出。
func FetchAll(parameter interface{}) []interface{} {
var model interface{}
var resultArray []interface{}
db := common.GetDB()
rows, err := db.Model(parameter).Where(parameter).Rows()
if err != nil {
fmt.Print(err.Error())
return nil
}
for rows.Next() {
db.ScanRows(rows, &model)
resultArray = append(resultArray, model)
}
fmt.Println(resultArray)
return resultArray
}
用法:
c.JSON(200, FetchAll(&ProductImage{ProductID: productID}))
但输出如下:
[<nil>,<nil>,<nil>]
这是为什么?
model
的类型不能是interface{}
你可以使用var model = map[string]interface{}{}
比较容易写:
func FetchAll(parameter interface{}) []map[string]interface{} {
var resultArray []map[string]interface{}
db := common.GetDB()
err := db.Model(parameter).Where(parameter).Find(&resultArray).Error
if err != nil {
fmt.Print(err)
return nil
}
fmt.Println(resultArray)
return resultArray
}