Используя go и gin-gonic, я хотел бы опубликовать простую форму, содержащую два поля тегов, а затем сохранить ее в mongodb.Ho для привязки к значениям среза в форме go (gin)?
Вот форма:
<form action="/quotes/{{ .quote.Id.Hex }}" method="POST">
<input type="text" name="author" value="{{ .quote.Author }}">
<textarea name="body" rows="3">{{ .quote.Body }}</textarea>
<input name="tag" value="" >
<input name="tag" value="" >
<button type="submit">Submit</button>
</form>
И обработчик:
func Create(c *gin.Context) {
db := c.MustGet("db").(*mgo.Database)
quote := models.Quote{}
err := c.Bind("e)
if err != nil {
c.Error(err)
return
}
//To debug
fmt.Println("form post values\n")
for t, v := range c.Request.Form["tag"] {
fmt.Println(t, v)
}
//To debug
fmt.Println(quote)
err = db.C(models.CollectionQuote).Insert(quote)
if err != nil {
c.Error(err)
}
c.Redirect(http.StatusMovedPermanently, "/quotes")
}
Теперь проблема, как для form post values
я получаю:
0 mytag1
1 mytag2
и quote details
дает что-то вроде :
{ObjectIdHex("") some-author somebody [] }
цитата модель такова:
// Quote model
type Quote struct {
Id bson.ObjectId `json:"_id,omitempty" bson:"_id,omitempty"`
Author string `json:"author" form:"author" binding:"required" bson:"author"`
Body string `json:"body" form:"body" binding:"required" bson:"body"`
Tag []string `json:"tag" bson:"tag"`
}
Таким образом, значения тегов получены, но не переплетены. Я знаю, как я могу исправить это и получить теги из формы? Я смотрел на джин guid, но ничего не мог найти об этом виде форм.