go 针对 time类型字段,前端查询,后端返回数据格式为UTC时间

测试代码

go 复制代码
package main

import (
	"context"
	"log"
	"net/http"
	"time"

	"github.com/gin-gonic/gin"
	"go.mongodb.org/mongo-driver/bson"
	"go.mongodb.org/mongo-driver/bson/primitive"
	"go.mongodb.org/mongo-driver/mongo"
	"go.mongodb.org/mongo-driver/mongo/options"
)

type Event struct {
	ID        primitive.ObjectID `bson:"_id,omitempty" json:"id,omitempty"`
	Name      string             `bson:"name" json:"name"`
	Timestamp time.Time          `bson:"timestamp" json:"timestamp"`
}

var collection *mongo.Collection

func init() {
	clientOptions := options.Client().ApplyURI("mongodb://127.0.0.1:27017/test")
	client, err := mongo.Connect(context.Background(), clientOptions)
	if err != nil {
		log.Fatal(err)
	}

	err = client.Ping(context.Background(), nil)
	if err != nil {
		log.Fatal(err)
	}

	collection = client.Database("test").Collection("events")
}

func createEvent(c *gin.Context) {
	var event Event
	if err := c.ShouldBindJSON(&event); err != nil {
		c.JSON(http.StatusBadRequest, gin.H{"error": err.Error()})
		return
	}

	event.Timestamp = time.Now().Local()

	insertResult, err := collection.InsertOne(context.Background(), event)
	if err != nil {
		c.JSON(http.StatusInternalServerError, gin.H{"error": err.Error()})
		return
	}

	c.JSON(http.StatusOK, insertResult)
}

func getEvents(c *gin.Context) {
	cur, err := collection.Find(context.Background(), bson.D{})
	if err != nil {
		c.JSON(http.StatusInternalServerError, gin.H{"error": err.Error()})
		return
	}
	defer cur.Close(context.Background())

	var events []Event
	for cur.Next(context.Background()) {
		var event Event
		err := cur.Decode(&event)
		if err != nil {
			c.JSON(http.StatusInternalServerError, gin.H{"error": err.Error()})
			return
		}
		events = append(events, event)
	}

	if err := cur.Err(); err != nil {
		c.JSON(http.StatusInternalServerError, gin.H{"error": err.Error()})
		return
	}

	c.JSON(http.StatusOK, events)
}

func main() {
	r := gin.Default()
	r.POST("/events", createEvent)
	r.GET("/events", getEvents)
	r.Run(":8080")
}

测试接口

  • 添加数据

  • 查询数据

相关推荐
MrsBaek5 分钟前
【前端笔记】CSS预处理语言 LESS
前端·css·笔记
gqkmiss8 分钟前
ChromeOS 135 版本更新
前端·chrome·浏览器·chromeos
顾云澜12 分钟前
Apache Superset本地部署结合内网穿透实现无公网IP远程查看数据
开发语言·后端·golang
小陈同学呦19 分钟前
聊聊CSS选择器
前端·css·面试
落沐萧萧19 分钟前
Java利用无外网(下):ClassPathXmlApplicationContext的不出网利用
java·开发语言
山野春茶28 分钟前
js基础回顾/事件委托
前端
窦再兴37 分钟前
CentOS8.5 LLaMA-Factory训练模型
开发语言·人工智能·python·llama-factory·llama3.2
yivifu1 小时前
使用pybind11开发c++扩展模块输出到控制台的中文信息显示乱码的问题
开发语言·python·pybind11
烁3471 小时前
每日一题(小白)暴力娱乐篇22
java·开发语言·算法·娱乐
北极象1 小时前
使用Golang打包jar应用
python·golang·jar