簡體   English   中英

GORM 無法使用.Find() 查詢所有記錄

[英]GORM unable to query all records using .Find()

我正在嘗試編寫一個 function 來查詢匹配一組條件的所有結果並將它們保存在結構切片中。

// Queries the database for the given set of fields and some string conditions specified as a map
func QueryAllRecords(db *gorm.DB, outputObject interface{}, conditions map[string]interface{}) {

    result := db.Where(conditions).Find(&outputObject)
    if result.Error != nil {
        panic(result.Error)
    }
    log.Println(Utils.CreateLogMessage("Queried all records", outputObject))
}

根據 GORM 文檔( https://gorm.io/docs/query.html#Retrieving-all-objects ),我可以使用.Find() function 查詢所有記錄,然后指定查詢的 output 所在的結構將被保存。

這是我對 QueryAllRecords 進行 function 調用的QueryAllRecords

var outputObject []Models.Product
conditions := map[string]interface{}{"name": "Sample Product"}

DB.QueryAllRecords(db, outputObject, conditions)
fmt.Println(outputObject)

當我嘗試打印outputObject時,我得到一個空的 slice [] .Find(&outputObject)似乎沒有像我希望的那樣將結果保存在切片中。 我可以在 function 本身內成功打印outputObject ,但在它返回后就不行了。

改用DB.QueryAllRecords(db, outputObject, conditions)

outputObject數組的引用/指針傳遞給QueryAllRecords ,或從 function 返回它。

我可以在 function 本身內成功打印 outputObject ,但在它返回后不能。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM