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

bson.ObjectId 的零值/零值是多少

bson.ObjectId 的零值/零值是多少

Go
守着一只汪 2023-05-15 15:41:11
当我陷入以下情况时,我正在创建一元测试:我有一个具有外键的对象。出于某种原因,我需要切换 ID 并且它可以工作。但是,有时,我需要删除此 ID。如果我有一个 ID,我就会意识到某个动作,如果我没有,那么什么也不会发生。但是,我找不到将我的设置为bson.ObjectIdasnil或零的方法。有谁知道该怎么做或解决方法?
查看完整描述

3 回答

?
幕布斯6054654

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

或者你可以使用primitive.NilObjectID

NilObjectID 是 ObjectID 的零值。


查看完整回答
反对 回复 2023-05-15
?
蝴蝶不菲

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

bson.ObjectId 是 string 的别名,因此零值是一个空字符串 ""



查看完整回答
反对 回复 2023-05-15
?
一只名叫tom的猫

TA贡献1906条经验 获得超2个赞

我现在使用的是解决方法:


package your_package


import "github.com/globalsign/mgo/bson"


func GenerateNewGuidHelper() *bson.ObjectId {

    id := bson.NewObjectId()

    return &id

}


func IsStringIdValid(id string) bool {

    return id != "" && bson.IsObjectIdHex(id)

}


func ConvertStringIdToObjectId(id string) *bson.ObjectId {

    if id != "" && bson.IsObjectIdHex(id){

        bsonObjectId := bson.ObjectIdHex(id)

        return &bsonObjectId

    }

    return nil

}


func ConvertStringIdsToObjectIds(ids []string) []*bson.ObjectId {

    var _ids []*bson.ObjectId

    for _, id := range ids {

        _ids = append(_ids, ConvertStringIdToObjectId(id))

    }

    return _ids

}


func IsObjectIdValid(id *bson.ObjectId) bool {

    return id.Hex() != "" && bson.IsObjectIdHex(id.Hex())

}


func ConvertObjectIdToStringId(id *bson.ObjectId) string  {

    if id != nil {

        return id.Hex()

    }

    return ""

}


func ConvertObjectIdsToStringIds(ids []*bson.ObjectId) []string {

    var _ids []string

    for _, id := range ids {

        _ids = append(_ids, ConvertObjectIdToStringId(id))

    }

    return _ids

}

我现在将我的 mongoDB ID 保存为而*bson.ObjectId不是bson.ObjectId. 例子:


package datamodels


import (

    "github.com/globalsign/mgo/bson"

)


type User struct {

    ID *bson.ObjectId `protobuf:"bytes,1,opt,name=id,proto3" json:"_id,omitempty" bson:"_id,omitempty"`

}

我希望它有所帮助!


查看完整回答
反对 回复 2023-05-15
  • 3 回答
  • 0 关注
  • 121 浏览
慕课专栏
更多

添加回答

举报

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