为了账号安全,请及时绑定邮箱和手机立即绑定

Golang 中的 Primitive.ObjectID 到字符串

Golang 中的 Primitive.ObjectID 到字符串

Go
HUWWW 2023-08-21 14:58:28
我正在尝试将类型转换primitive.ObjectID为stringGo 中的类型。我正在使用mongo-driver来自go.mongodb.org/mongo-driver.我尝试使用类型断言,例如-mongoId := mongoDoc["_id"]; stringObjectID := mongoId.(string)VSCode 接受哪个。代码被编译,当它到达此特定代码行时,它会抛出此错误panic: interface conversion: interface {} is primitive.ObjectID, not string
查看完整描述

4 回答

?
三国纷争

TA贡献1804条经验 获得超7个赞

错误消息告诉mongoDoc["_id"]is of typeinterface{}持有 type 的值primitive.ObjectID。这不是一个string,而是一个独特的类型。您只能primitive.ObjectID从接口值键入断言。

如果您想要string此 MongoDB ObjectId 的表示形式,您可以使用其ObjectID.Hex()方法来获取 ObjectId 字节的十六进制表示形式:

mongoId := mongoDoc["_id"]
stringObjectID := mongoId.(primitive.ObjectID).Hex()


查看完整回答
反对 回复 2023-08-21
?
繁星coding

TA贡献1797条经验 获得超4个赞

2021 年情况发生了变化。这里有一个更简单的方法。它让用户从模型中询问它是什么类型,然后就可以了


var user models.User


query := bson.M{"$or": []bson.M{{"username": data["username"]}, {"email": data["username"]}}}


todoCollection := config.MI.DB.Collection(os.Getenv("DATABASE_COLLECTION_USER"))

todoCollection.FindOne(c.Context(), query).Decode(&user)


stringObjectID := user.ObjectID.Hex()

上面的代码适用于此接口:


type User struct {

    ObjectID primitive.ObjectID `bson:"_id" json:"_id"`


    // Id        string    `json:"id" bson:"id"`

    Username      string    `json:"username" gorm:"unique" bson:"username,omitempty"`

    Email         string    `json:"email" gorm:"unique" bson:"email,omitempty"`

    Password      []byte    `json:"password" bson:"password"`

    CreatedAt     time.Time `json:"createdat" bson:"createat"`

    DeactivatedAt time.Time `json:"updatedat" bson:"updatedat"`

}

因此:这 3 行代码就可以很好地做到这一点:


objectidhere := primitive.NewObjectID()

stringObjectID := objectidhere.Hex()


filename_last := filename_rep + "_" + stringObjectID + "." + fileExt


查看完整回答
反对 回复 2023-08-21
?
翻过高山走不出你

TA贡献1875条经验 获得超3个赞

现在你可以只做 mongoId.Hex()



查看完整回答
反对 回复 2023-08-21
?
莫回无

TA贡献1865条经验 获得超7个赞

var stringObjectId string = mongoId.(primitive.ObjectID).String()



查看完整回答
反对 回复 2023-08-21
  • 4 回答
  • 0 关注
  • 263 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信