英文:
query a collection in mongodb using golan and returning an id as string
问题
伙计们,请帮我翻译一下。我正在尝试使用用户的电话号码在 MongoDB 和 Golang 中查询一个集合,获取用户的 ID,并使用该 ID 查询另一个集合。但是,当我尝试使用返回的 ID 时,它给出了以下错误:
无法将 userid(类型为 interface{} 的变量)作为字符串值传递给 primitive.ObjectIDFromHex:需要类型断言
我的代码如下:
var result bson.M
err := userdataCollection.FindOne(context.TODO(), bson.M{"phone":"+2347000000"}).Decode(&result)
if err != nil {
if err == mongo.ErrNoDocuments {
// 这个错误意味着你的查询没有匹配到任何文档。
return
}
log.Fatal(err)
}
var userid = result["_id"]
fmt.Printf("var6 = %T\n", userid)
json.NewEncoder(w).Encode(result["_id"]) // 这会打印用户的 ID
id,_ := primitive.ObjectIDFromHex(userid) // 这里出现了错误
英文:
Guys please i'm trying to query a collection in MongoDB and golan using the user phone, get the id of the user and use it to query another collection but when I try to use that return id it gives me an error of
cannot use userid (variable of type interface{}) as string value in argument to primitive.ObjectIDFromHex: need type assertion
My Code
var result bson.M
err := userdataCollection.FindOne(context.TODO(), bson.M{"phone":"+2347000000"}).Decode(&result)
if err != nil {
if err == mongo.ErrNoDocuments {
// This error means your query did not match any documents.
return
}
log.Fatal(err)
}
var userid = result["_id"]
fmt.Printf("var6 = %T\n", userid)
json.NewEncoder(w).Encode(result["_id"]) // this returns prints the user id
id,_ := primitive.ObjectIDFromHex(userid) // where I am having the error
答案1
得分: 1
返回的_id
已经是primitive.ObjectID
类型,所以可以使用简单的类型断言(无需调用primitive.ObjectIDFromHex()
):
id := userid.(primitive.ObjectID)
英文:
The _id
returned is already of type primitive.ObjectID
, so use a simply type assertion (and no need to call primitive.ObjectIDFromHex()
):
id := userid.(primitive.ObjectID)
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论