Nid*_*vid 2 database go mongodb nosql mgo
如何仅使用单个DB 调用(如db.collection.insert() 中的那样,使用mgo库将文档数组插入到 MongoDB 中?
我有以下Transaction结构:
type Transaction struct {
Brand string `json:"brand"`
Name string `json:"name"`
Plu string `json:"plu"`
Price string `json:"price"`
}
Run Code Online (Sandbox Code Playgroud)
从POST请求中,我将收到这些结构的数组。我想将它们作为单独的文档插入到 MongoDB 中,但使用单个 DB 调用,如db.collection.insert() 中所述
我尝试使用c.Insertmgo
以下是代码片段:
func insertTransaction(c *gin.Context) {
var transactions []Transaction
err := c.BindJSON(&transactions)
if err != nil {
c.AbortWithStatusJSON(http.StatusBadRequest, map[string]string{"error":"invalid JSON"})
return
}
err = InsertTransactons(transactions)
if err != nil {
c.AbortWithStatusJSON(http.StatusInternalServerError, &map[string](interface{}){
"status": "error",
"code": "500",
"message": "Internal server error",
"error": err,
})
return
}
c.JSON(http.StatusCreated, &map[string](interface{}){
"status": "success",
"code": "0",
"message": "created",
})
}
func InsertTransactons(u []Transaction) error {
s := GetSession()
defer s.Close()
c := s.DB(DB).C(TransactionColl)
err := c.Insert(u...)
if err != nil {
return err
}
return nil
}
Run Code Online (Sandbox Code Playgroud)
但是当我编译并运行代码时,出现以下错误:
go/database.go:34:17: 不能在 c.Insert 的参数中使用 u (type *[]Transaction) 作为 type []interface {}
你不能[]*Transaction作为[]interface{}. 您需要将每个转换Transaction为inferface{}以更改其内存布局。
var ui []interface{}
for _, t := range u{
ui = append(ui, t)
}
Run Code Online (Sandbox Code Playgroud)
通过用户界面c.Insert,而不是
| 归档时间: |
|
| 查看次数: |
10803 次 |
| 最近记录: |