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()

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
- 4 回答
- 0 關注
- 402 瀏覽
添加回答
舉報