簡體   English   中英

如何正確使用 go-pg 執行 queryOne?

[英]how to do queryOne with go-pg properly?

我想queryOne使用go-pg只返回一行到 object 而不是數組。

這是我的簡單代碼:

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, nil
type 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

如何只查詢一行並將其返回給 object 而不是數組?

您需要初始化 model 的實例並將指針傳遞給該實例,而不是將指針傳遞給 model 的未初始化的 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

暫無
暫無

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

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