gpt4 book ai didi

mongodb - 使用 mongo-go-driver 和接口(interface)将游标反序列化为数组

转载 作者:数据小太阳 更新时间:2023-10-29 03:19:17 26 4
gpt4 key购买 nike

我使用 golang 创建了一个 api,我想创建一些功能测试,为此我创建了一个接口(interface)来抽象我的数据库。但为此,我需要能够在不知道类型的情况下将游标转换为数组。


func (self *KeyController) GetKey(c echo.Context) (err error) {
var res []dto.Key
err = db.Keys.Find(bson.M{}, 10, 0, &res)
if err != nil {
fmt.Println(err)
return c.String(http.StatusInternalServerError, "internal error")
}
c.JSON(http.StatusOK, res)
return
}
//THE FIND FUNCTION ON THE DB PACKAGE
func (s MongoCollection) Find(filter bson.M, limit int, offset int, res interface{}) (err error) {
ctx := context.Background()
var cursor *mongo.Cursor
l := int64(limit)
o := int64(offset)
objectType := reflect.TypeOf(res).Elem()
cursor, err = s.c.Find(ctx, filter, &options.FindOptions{
Limit: &l,
Skip: &o,
})

if err != nil {
return
}

defer cursor.Close(ctx)

for cursor.Next(ctx) {
result := reflect.New(objectType).Interface()
err := cursor.Decode(&result)
if err != nil {
panic(err)
}
res = append(res.([]interface{}), result)

}
return
}


有人有想法吗?

最佳答案

可以直接调用“All”方法:

ctx := context.Background()
err = cursor.All(ctx, res)
if err != nil {
fmt.Println(err.Error())
}

供引用:

https://godoc.org/go.mongodb.org/mongo-driver/mongo#Cursor.All

关于mongodb - 使用 mongo-go-driver 和接口(interface)将游标反序列化为数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56481473/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com