【发布时间】:2018-05-08 09:37:01
【问题描述】:
我正在使用用于 MongoDB 的 mgo 驱动程序和 Gin 框架。
type Users struct {
User_id *string `json:"id user" bson:"id user"`
Images []string `json:"images" bson:"images"`
}
我有这个函数试图将切片转换为 JSON。
这里的切片是UsersTotal
func GetUsersApi(c *gin.Context) {
UsersTotal, err := GetUsers()
if err != nil {
fmt.Println("error:", err)
}
c.JSON(http.StatusOK, gin.H{
"Count Users": len(UsersTotal),
"Users Found ": UsersTotal,
})
session, err := mgo.Dial(URL)
if err == nil {
fmt.Println("Connection to mongodb established ok!!")
cc := session.DB("UsersDB").C("results")
err22 := cc.Insert(&UsersTotal)
if err22 != nil {
fmt.Println("error insertion ", err22)
}
}
session.Close()
}
运行它我得到以下错误:
error insertion Wrong type for documents[0]. Expected a object, got a array.
【问题讨论】:
-
GetUsers是否返回[]Users, error? -
是的@Hadi,它返回一个
array of Users和一个error来检查,我的问题是将这个slice: UsersTotal插入我的mongoDB时 -
嗯,请遍历您的数组,然后插入每个数组。我认为它会起作用。
-
@Hadi 你的意思是像在切片上做一个范围并尝试在每一行上迭代,这听起来会影响运行时,我在这里处理一个巨大的结果
-
试试这个
cc.Insert(UsersTotal...)@Data_Geek