登录
首页 >  Golang >  Go问答

Gin表单绑定无法接受Primitive.ObjectId类型

来源:stackoverflow

时间:2024-03-04 16:06:28 219浏览 收藏

偷偷努力,悄无声息地变强,然后惊艳所有人!哈哈,小伙伴们又来学习啦~今天我将给大家介绍《Gin表单绑定无法接受Primitive.ObjectId类型》,这篇文章主要会讲到等等知识点,不知道大家对其都有多少了解,下面我们就一起来看一吧!当然,非常希望大家能多多评论,给出合理的建议,我们一起学习,一起进步!

问题内容

package main

import (
    "github.com/gin-gonic/gin"
    "go.mongodb.org/mongo-driver/bson"
    "go.mongodb.org/mongo-driver/bson/primitive"
    "net/http"
)

type querymodel struct {
    id *primitive.objectid `form:"id"`
}

func main() {
    g := gin.default()

    g.get("/hello", func(c *gin.context) {
        var query querymodel
        if err := c.bindquery(&query); err != nil {
            c.json(http.statusbadrequest, bson.m{"msg": err.error()})
            return
        }
    })
    g.run(":9000")
}

结果:

$ curl http://localhost:9000/hello\?id\=5f2146e27d0e10f02a525412
{"msg":"[\"5f2146e27d0e10f02a525412\"] is not valid value for primitive.ObjectID"}

如您所见,这在路径、查询中不起作用。但它在 body(json) 中有效!我不知道如何解决这个问题。顺便说一句,我现在使用 string 而不是 primitive.obejctid


解决方案


在mongo文档中,objectid是字节数组类型

type ObjectID [12]byte

不能将其与字符串绑定(查询是字符串)。

因此,使用字符串接受此查询并将其转换为 [12]byte 是一种可行的方法

终于介绍完啦!小伙伴们,这篇关于《Gin表单绑定无法接受Primitive.ObjectId类型》的介绍应该让你收获多多了吧!欢迎大家收藏或分享给更多需要学习的朋友吧~golang学习网公众号也会发布Golang相关知识,快来关注吧!

声明:本文转载于:stackoverflow 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>