我想queryOne使用go-pg它只返回一行到一個對象而不是數組。這是我的簡單代碼:var reportMessage *ReportMessage _, err := db.Model((*ReportMessage)(nil)).QueryOne(&reportMessage, ` SELECT SUM(total_order) total_order, SUM(total_message) total_message, SUM(hsm_message) hsm_message , SUM(outbound_message) outbound_message , SUM(inbound_message) inbound_message , SUM(total_order_amount) total_order_amount FROM report_message rm WHERE seller_id =? and "date" between ? and ?; `, sellerID, dateStart, dateEnd) if err != nil { return nil, err } return reportMessage, niltype ReportMessage struct { ID string `json:"id"` SellerID string `json:"seller_id"` TotalOrder int `json:"total_order"` Date time.Time `json:"date"` HsmMessage int `json:"hsm_message"` TotalMessage int `json:"total_message"` OutboundMessage int `json:"outbound_message"` InboundMessage int `json:"inbound_message"` TotalOrderAmount float32 `json:"total_order_amount"`}我希望它只返回reportMessage 而不是一個數組。這是我的錯誤:json: cannot unmarshal number into Go value of type models.ReportMessage如何只查詢一行并將其返回給對象而不是數組?
1 回答

千巷貓影
TA貢獻1829條經驗 獲得超7個贊
您需要初始化模型的一個實例并傳遞一個指向該實例的指針,而不是傳遞一個指向模型未初始化的 nil 指針的指針。
reportMessage := new(ReportMessage)
_, err := db.Model((*ReportMessage)(nil)).QueryOne(reportMessage, `
SELECT
SUM(total_order) total_order,
SUM(total_message) total_message,
SUM(hsm_message) hsm_message ,
SUM(outbound_message) outbound_message ,
SUM(inbound_message) inbound_message ,
SUM(total_order_amount) total_order_amount
FROM report_message rm WHERE seller_id =? and "date" between ? and ?;
`, sellerID, dateStart, dateEnd)
if err != nil {
return nil, err
}
return reportMessage, nil
- 1 回答
- 0 關注
- 133 瀏覽
添加回答
舉報
0/150
提交
取消