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

测试代码

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")
}

测试接口

  • 添加数据
    在这里插入图片描述

  • 查询数据
    在这里插入图片描述

相关推荐

  1. mysql 字段类型json,用list接收

    2024-06-06 07:38:09       37 阅读
  2. 前端时间格式传入负载里面没有东西

    2024-06-06 07:38:09       25 阅读
  3. go语言UTC时间转换中国时间

    2024-06-06 07:38:09       22 阅读
  4. 返回数据前端保留两位小数

    2024-06-06 07:38:09       61 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-06-06 07:38:09       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-06-06 07:38:09       101 阅读
  3. 在Django里面运行非项目文件

    2024-06-06 07:38:09       82 阅读
  4. Python语言-面向对象

    2024-06-06 07:38:09       91 阅读

热门阅读

  1. 【Leetcode Python】70.爬楼梯

    2024-06-06 07:38:09       29 阅读
  2. Python入门笔记

    2024-06-06 07:38:09       30 阅读
  3. 20分钟快速入门SQL

    2024-06-06 07:38:09       29 阅读
  4. 【Vue3】shallowReactive() and shallowReadonly()

    2024-06-06 07:38:09       24 阅读
  5. rust之cargo install cargo-binstall 是什么

    2024-06-06 07:38:09       25 阅读
  6. maxwell同步mysql到kafka(一个服务器启动多个)

    2024-06-06 07:38:09       20 阅读
  7. TCP/IP 接收发送缓存大小的自动调优 Auto Tuning

    2024-06-06 07:38:09       27 阅读
  8. 《解锁创意无限:Stable Diffusion 详细教程指南》

    2024-06-06 07:38:09       28 阅读