Der Wert "_id" kann nicht mit mgo mit golang abgerufen werden
Dies ist mein struct-definition:
type Article struct {
Id bson.ObjectId `json:"id" bson:"_id,omitempty"`
Title string `json:"title"`
Author string `json:"author"`
Date string `json:"date"`
Tags string `json:"tags"`
Content string `json:"content"`
Status string `json:"status"`
}
Dies ist die Methode, die ich meine Daten aus der Datenbank:
func AllArticles() []Article {
articles := []Article{}
err := c_articles.Find(bson.M{}).All(&articles)
if err != nil {
panic(err)
}
return articles
}
Dies ist ein Stück von Objekt in der Datenbank gespeichert:
{ "_id" : ObjectId( "5281b83afbb7f35cb62d0834" ),
"title" : "Hello1",
"author" : "DYZ",
"date" : "2013-11-10",
"tags" : "abc",
"content" : "This is another content.",
"status" : "published" }
Dies ist das gedruckte Ergebnis:
[{ObjectIdHex("") Hello1 DYZ 2013-11-10 abc This is another content. published} {ObjectIdHex("") Hello2 DYZ 2013-11-14 abc This is the content. published}]
Es scheint, dass ich kann nicht den realen Wert der _id
Feld, es ist immer ""
. Was ist das problem?
InformationsquelleAutor der Frage dyzdyz010 | 2013-11-26
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich habe das problem gefunden.
In den code:
zwischen
json:
undbson:
habe ich einetab
stattspace
so tritt das problem auf. Wenn ich diese Zeile code:Mit eine
space
zwischenjson:
undbson:
kann, dann wird es gut funktionieren.InformationsquelleAutor der Antwort dyzdyz010
Ich hatte das gleiche Problem und war in der Lage, herauszufinden, dass ich hatte meine Importe vermischt. Ich habe das Gefühl, dass Gustavo konnte das problem nicht reproduzieren, weil Sie nicht enthalten, was Ihre Importe aussah, und er füllt Sie richtig aus.
Nur kurz erklären, wie mein Problem war ähnlich:
Diese -
war nicht für mich arbeiten, es wäre nicht die info aus der Datenbank und würde zurückgeben-
Wie ich es behoben...wir haben festgestellt, dass
In den server.gehen Sie Seite, von der importiert wurde.
Hätte diese.
Der eigentliche Fehler ist nicht die Verwendung des gopkg.in/mgo.v2. Es ist, dass der code mischen labix.org/und gopkg.im import-Module.
Also der trick ist, verwenden Sie diese.
Oder.
Aber nicht mischen. Die oberste ist die favorisierte, wie das ist, was die neuesten docs verwenden.
Hoffe, das hilft.
InformationsquelleAutor der Antwort mongoUser
Dein code ist in Ordnung.
Hier ist ein in sich geschlossenes Beispiel, dass Ihr code, unverändert:
Und hier ist die Ausgabe:
Das Problem woanders liegt. Die Sammlung kann sich wirklich nicht über eine
_id
Feld, zum Beispiel.InformationsquelleAutor der Antwort Gustavo Niemeyer