首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何正确使用go-pg做queryOne?

如何正确使用go-pg做queryOne?
EN

Stack Overflow用户
提问于 2020-04-21 15:56:11
回答 1查看 569关注 0票数 1

我想使用只向对象返回一行的go-pg进行queryOne,而不是数组。

这是我的简单代码:

代码语言:javascript
复制
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
代码语言:javascript
复制
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,而不是数组。

这是我的错误:

代码语言:javascript
复制
json: cannot unmarshal number into Go value of type models.ReportMessage

如何只查询一行并将其返回给object而不是array?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-04-23 12:04:47

您需要初始化模型的一个实例并传递一个指向该实例的指针,而不是传递一个指向模型的未初始化nil指针的指针。

代码语言:javascript
复制
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
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61338543

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档