Golang GAE - intID in struct für Schnurrbart

6

Hier ist ein Beispiel der App. Der wesentliche Code ist in: golang-code / handler / handler.go (Nach dem Betreff sollte eine ID erscheinen!)

Ich versuche, ein kleines Blog-System in Golang auf Google Appengine zu erstellen und Moustache als Vorlagen-Engine zu verwenden.

Also, ich habe eine Struktur:

%Vor%

Die Daten werden über

an GAE übergeben %Vor%

GAE weist also automatisch eine intID (int64) zu. Jetzt habe ich versucht, die neuesten Blogposts zu bekommen

%Vor%

Bis dort alles funktioniert, aber wenn ich versuche, auf intID (oder stringID, was auch immer) zuzugreifen, habe ich keinen Zugriff darauf: - (

%Vor%

(PostTitle funktioniert, intID nicht, ich habe tausend Dinge probiert, nichts hat funktioniert :-()

Irgendjemand eine Idee? Das wäre großartig!

Bearbeiten: Ich benutze Schnurrbart.

Ссылка

Im Code verwende ich:

%Vor%

Und dann können die Daten in der .mustache-Vorlage mit {{{Content}}} oder {{{PostTitle}}} usw. abgerufen werden.

    
Testuser 31.03.2012, 13:37
quelle

4 Antworten

7

intID ist eine interne Eigenschaft eines Schlüssels, nicht der Struktur, und ist über einen Getter zugänglich:

%Vor%

GetAll gibt []*Key zurück, was aber nicht der Fall ist mit:

%Vor%

Eine Möglichkeit, dies zu umgehen, besteht darin, eine Viewmodel-Struktur zu erstellen, die sowohl Ihre Post- als auch Ihre Schlüsselinformationen enthält (ungetestet, aber das ist der Kern davon):

%Vor%     
hyperslug 31.03.2012, 22:57
quelle
15

Wie hyperslug darauf hingewiesen hat, befindet sich das ID-Feld einer Entität auf dem Schlüssel, nicht auf der Struktur, in die es eingelesen wird.

Sie können auch ein ID-Feld zu Ihrer Struktur hinzufügen und den Datenspeicher an Ignoriere es , zB:

%Vor%

Sie können dann das Id-Feld nach einem Aufruf von GetAll () wie folgt eingeben

%Vor%

Dies hat den Vorteil, dass kein zusätzlicher Typ eingeführt wird.

    
koz 02.10.2012 00:44
quelle
2

Ich weiß, dass diese Frage ein paar Jahre alt ist, aber der folgende Artikel war mir in dieser Hinsicht sehr hilfreich: Golang-Grundlagen mit Google Datastore .

In dem Artikel gibt der Autor ein schönes Beispiel dafür, wie Sie eine Abfrage ausführen können, die eine Entität nach ihrer ID abruft ...

%Vor%

... sowie das Abrufen einer Liste / Sammlung von Entitäten mit der zugehörigen ID:

%Vor%

Das obige Snippet ist sehr nahe an der hilfreichen Antwort von @koz.

    
JohnnyCoder 06.12.2015 02:47
quelle
0

AFAICS, das Blogposts struct hat kein Feld intID , aber es hat ein Feld PostTitle . Ich denke, das könnte der Grund sein, warum der erstere nicht und der spätere nicht gerendert wird, obwohl ich Moustache noch nie benutzt habe ...

    
zzzz 31.03.2012 15:19
quelle