Ich bin neu zu gehen und mit Gin Rahmen einfügen versuchen, ein Benutzerobjekt zu erstellen:Kann nicht Formulardaten in der Datenbank mit mgo in Gin
const (
// CollectionArticle holds the name of the users collection
CollectionUser = "users"
)
// User table contains the information for each user
type User struct {
ID bson.ObjectId `json:"_id,omitempty" bson:"_id,omitempty"`
Username string `json:"username" bson:"username"`
Email string `json:"email" bson:"email"`
Password string `json:"password" bson:"password"`
StatusID uint8 `json:"status_id" bson:"status_id"`
CreatedAt time.Time `json:"created_at" bson:"created_at"`
UpdatedAt time.Time `json:"updated_at" bson:"updated_at"`
Deleted uint8 `json:"deleted" bson:"deleted"`
}
Dies ist die Controller-Benutzer zu erstellen ist
// Create a user
func Create(c *gin.Context) {
db := c.MustGet("db").(*mgo.Database)
//to help debugging
x, _ := ioutil.ReadAll(c.Request.Body)
log.Printf("request body is: %s \n", string(x))
user := models.User{}
err := c.Bind(&user)
if err != nil {
c.Error(err)
return
}
//to help debugging
log.Printf("user is: %v", user)
log.Printf("username is: %s and emails is %s", user.Username, user.Email)
err = db.C(models.CollectionUser).Insert(user)
if err != nil {
c.Error(err)
}
c.Redirect(http.StatusMovedPermanently, "/users")
}
und das Anmeldeformular ist:
<form action="/user/create" method="POST">
<div class="form-group">
<label for="username">Username</label>
<input type="text" name="username" class="form-control" id="username" placeholder="Enter the username of the user" >
</div>
<div class="form-group">
<label for="email">Email</label>
<input name="email" class="form-control" placeholder="Enter user email" />
</div>
<div class="form-group">
<label for="password">Password</label>
<input type="password" name="password" class="form-control" placeholder="Password" required>
</div>
<button type="submit" class="btn btn-default">Submit</button>
</form>
im Terminal erhalte ich:
[GIN-debug] Listening and serving HTTP on :7000
[GIN] 2016/04/25 - 06:30:04 | 200 | 549.499µs | 127.0.0.1 | GET /register
request body is: username=bob&email=bob%40me.com&password=1234
user is: {ObjectIdHex("") 0 0001-01-01 00:00:00 +0000 UTC 0001-01-01 00:00:00 +0000 UTC 0}
username is: and emails is
AS Sie username
sehen können, email
und password
Feldwerte an die Steuerung übergeben werden. Wenn ich users
Sammlung in der Mongo-Datenbank überprüfe, sehe ich, dass die Objekte erstellt werden, aber die Felder, die von dem Formular übermittelt werden, sind leer. Ich konnte nicht herausfinden, warum das passiert, also schätzen Sie Ihre Hinweise.
Danke für den Tipp. Ich fügte der Struktur 'form:" username "usw. hinzu, aber die Felder in neuen Objekten werden in den Datenbanken als leer gespeichert. – Karlom
habe keine Ahnung, vielleicht Track Gin Form Parser Codes, scheint keine harte Arbeit. –