我使用go,mgo和gin gonic真的很新......我一直在创建一个迷你应用程序,我在使用mgo将新注册表插入mongoDB时遇到问题。我的错误说:
" PANIC:错误解析字段文档的元素0 ::由::引起 错误的类型为' 0'字段,预期对象,找到0:[{date:new 日期(1441051152939),从:" 11",到:" 12",办公室:" 2",client_id: " 1368465545" }] _"
我的结构是下一个结构:
type Reservation struct {
ID bson.ObjectId `bson:"_id,omitempty" json:"_id"`
Date time.Time `bson:"date" json:"date"`
From string `bson:"from" json:"from"`
To string `json:"to"`
Office string `json:"office"`
Client_id string `json:"client_id"` }
我试图使用gin-gonic和mgo将其插入如下:
func addReservation(c *gin.Context) {
x := session.DB("projXXXX").C("reservation")
var reservations []Reservation
c.Bind(&reservations)>
err := x.Insert(&reservations)
if err != nil {
panic(err)
}
c.String(200,"whatever")
}
我在mongoDB中的收藏是这样的:
{
"_id" : ObjectId("55ba2e611cb87b9a6d75e94b"),
"date" : ISODate("2015-10-22T00:00:00.000Z"),
"from" : "9",
"to" : "10",
"office" : "4",
"client_id" : "1123456469797"
}
非常感谢你的帮助
答案 0 :(得分:4)
从错误的角度来看,MongoDB正在看到一个数组,它希望看到一个对象。看起来问题是您尝试将[]Reservation
切片作为单个对象插入。
Collection.Insert
不是将一片对象插入,而是将每个对象作为单独的参数插入。您可能想要使用the special ...
syntax for calling a variadic function:
err := x.Insert(reservations...)