You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用Go Fiber搭配GORM获取PostgreSQL数据库中的最新数据

你当前的代码会返回表中所有Humid记录,且默认按主键Id升序排列,无法优先获取最新插入的数据。需要通过GORM的Order方法按CreateAt字段倒序排列,结合Limit限制返回数量即可实现需求,同时建议补充错误捕获逻辑避免接口异常无提示。

场景1:只获取最新的1条湿度数据

func WebsoValue(c *fiber.Ctx) error {
    var latestHumid Humid
    // 按创建时间倒序,取第一条
    err := DB.Order("create_at desc").First(&latestHumid).Error
    if err != nil {
        // 可根据业务需求调整错误响应逻辑,比如无数据时返回404
        return c.Status(fiber.StatusNotFound).JSON(fiber.Map{
            "error": "未查询到湿度数据",
        })
    }
    return c.JSON(latestHumid)
}

场景2:获取所有数据,按时间从新到旧排列

func WebsoValue(c *fiber.Ctx) error {
    var device []Humid
    // 按创建时间倒序排列所有记录
    err := DB.Order("create_at desc").Find(&device).Error
    if err != nil {
        return c.Status(fiber.StatusInternalServerError).JSON(fiber.Map{
            "error": "查询数据失败",
        })
    }
    return c.JSON(device)
}

注意事项

如果你的PostgreSQL表中存储时间的字段名和结构体字段CreateAt的蛇形映射结果create_at不一致,需要给结构体字段加GORM标签指定列名:

type Humid struct {
    Id        int
    Sensor_id int
    Value     float32
    CreateAt  time.Time `gorm:"column:你的实际时间字段名"`
}

如果需要固定返回最新的N条数据,可在Order方法后追加Limit(N),比如Limit(10)就是返回最新的10条记录。

内容的提问来源于stack exchange,提问作者Ahmad Hidayat

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.05 02:09:02