猿问

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

当我陷入以下情况时,我正在创建一元测试:

  • 我有一个具有外键的对象。出于某种原因,我需要切换 ID 并且它可以工作。但是,有时,我需要删除此 ID。如果我有一个 ID,我就会意识到某个动作,如果我没有,那么什么也不会发生。

但是,我找不到将我的设置为bson.ObjectIdasnil或零的方法。

有谁知道该怎么做或解决方法?


守着一只汪
浏览 154回答 3
3回答

幕布斯6054654

或者你可以使用primitive.NilObjectIDNilObjectID 是 ObjectID 的零值。

蝴蝶不菲

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

一只名叫tom的猫

我现在使用的是解决方法:package your_packageimport "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 datamodelsimport (    "github.com/globalsign/mgo/bson")type User struct {    ID *bson.ObjectId `protobuf:"bytes,1,opt,name=id,proto3" json:"_id,omitempty" bson:"_id,omitempty"`}我希望它有所帮助!
随时随地看视频慕课网APP

相关分类

Go
我要回答