1 回答

TA貢獻(xiàn)1828條經(jīng)驗(yàn) 獲得超3個(gè)贊
請(qǐng)注意,labix.org/v2/mgo
不再維護(hù),如果您想使用mgo
,請(qǐng)github.com/globalsign/mgo
改用?;蛘咝碌墓俜絤ongo-go 驅(qū)動(dòng)程序。
bson.ObjectId
是一種具有string
以下基礎(chǔ)類型的類型:
type?ObjectId?string
因此,當(dāng)您像這樣填充對(duì)象時(shí):
databaseQuery := databasestructs.Find{
? ? ID: bson.ObjectId(request.FormValue("_id")),
? ? MongoCollection: "users",
? ? Criteria: "_id",
? ? CriteriaValue: "",
? ? FindAll: false,
}
bson.ObjectId(request.FormValue("_id"))
只不過是類型轉(zhuǎn)換。您將十六進(jìn)制對(duì)象 ID 字符串轉(zhuǎn)換為bson.ObjectId
,但這不是您想要的。您想要解析十六進(jìn)制對(duì)象 ID。為此,請(qǐng)使用以下函數(shù):bson.ObjectIdHex()
databaseQuery := databasestructs.Find{
? ? ID: bson.ObjectIdHex(request.FormValue("_id")),
? ? MongoCollection: "users",
? ? Criteria: "_id",
? ? CriteriaValue: "",
? ? FindAll: false,
}
請(qǐng)注意,bson.ObjectIdHex()
如果傳遞的字符串是無效的十六進(jìn)制對(duì)象 ID,則會(huì)出現(xiàn)恐慌。用于bson.IsObjectIdHex()
在調(diào)用之前進(jìn)行檢查bson.ObjectId()
。
如果您想使用官方驅(qū)動(dòng)程序而不是mgo
,您可以使用primitive.ObjectIDFromHex()
函數(shù)來創(chuàng)建ObjectId
,例如:
id, err := primitive.ObjectIDFromHex(request.FormValue("_id"))
if err != nil {
? ? // Handle error
? ? return
}
// If no error, you may use it:
databaseQuery := databasestructs.Find{
? ? ID: id,
? ? // ...
}
- 1 回答
- 0 關(guān)注
- 219 瀏覽
添加回答
舉報(bào)