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
}