【问题标题】:Function which returns list of struct from gorm database returning nil?从gorm数据库返回结构列表的函数返回nil?
【发布时间】:2021-10-13 03:14:33
【问题描述】:

我正在尝试创建一个函数,它将表中的所有内容作为表结构的一部分输出。

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>]

为什么会这样?

【问题讨论】:

    标签: go go-gorm go-gin


    【解决方案1】:

    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
    }
    

    【讨论】:

    • 我不知道您可以将 .Find 映射到数组。非常感谢!真的很感激。
    猜你喜欢
    • 2019-01-21
    • 1970-01-01
    • 2019-06-19
    • 1970-01-01
    • 1970-01-01
    • 2015-02-14
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多