[英]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.