app engine ndb - Wie man Entity per Schlüssel mit ID laden?

8

Ich versuche, eine Entity per Schlüssel unter Verwendung der ID zu laden, die ihr vom Datenspeicher zugewiesen wurde, aber ich sehe keine API-Methode, um dies zu tun (mit NDB). Ich dachte, ich wäre in der Lage, einen Schlüssel aus einer Integer-ID zu machen und key.get () zu verwenden, um die Entity zu laden, aber ich sehe keinen Weg, einen Schlüssel aus nur einer ID zu machen. Ich vermute, ich vermisse hier etwas Offensichtliches. Wie sollte ich eine Entität laden, in der ich nur die ID kenne?

    
user605331 05.04.2012, 12:36
quelle

3 Antworten

24

YourModel.get_by_id() ruft eine Modellinstanz nach ID ab.

Hier die Dokumentation:
Ссылка

glaube nicht, dass man eine Entity nicht durch ID erhalten kann, ohne die Art zu kennen, da Instanzen verschiedener Model-Klassen die gleiche ID / Schlüssel_Name

haben können     
aschmid00 05.04.2012, 13:13
quelle
22

Ein anderer Weg: ndb.Key(YourModel, id).get() .

    
Guido van Rossum 06.04.2012 05:12
quelle
0

Modelle in NDB definieren ihren Schlüsseltyp nicht als Teil des Modells. Dies ist insofern nützlich, als Sie einen bestimmten Modelltyp verwenden können, auf den über mehrere verschiedene Arten von Schlüsseln und Eltern zugegriffen werden kann, wodurch sie flexibler werden. Aber es ist etwas problematisch, weil es nicht immer klar ist, was der Schlüssel darstellt oder wo er herkommt.

In Fällen, in denen es immer nur einen Schlüssel für ein bestimmtes Modell gibt (was fast jedes Modell ist), möchte ich eine Klassenmethode erstellen Schlüssel, der ein bisschen semantische Klarheit hinzufügt:

%Vor%

Sicher ist der hinzugefügte Code nicht unbedingt notwendig, aber er bringt Klarheit und macht meine Modelle längerfristig wartungsfähig.

    
tylerl 28.05.2015 19:51
quelle