Heim  >  Artikel  >  Backend-Entwicklung  >  Wie rufe ich mithilfe von Golang Entitäten anhand eines ID-Arrays im Google App Engine-Datenspeicher ab?

Wie rufe ich mithilfe von Golang Entitäten anhand eines ID-Arrays im Google App Engine-Datenspeicher ab?

Barbara Streisand
Barbara StreisandOriginal
2024-10-25 17:32:44470Durchsuche

How to Retrieve Entities by an Array of IDs in Google App Engine Datastore using Golang?

Datenspeicher nach Entitäten mit einem Array von IDs mithilfe von Golang abfragen

In Google App Engine Datastore gibt es keine direkte Unterstützung für die Durchführung eines „ IN“-Abfrage zum Abrufen von Entitäten basierend auf einem Array von IDs. Es gibt jedoch alternative Ansätze, um diese Funktionalität zu erreichen.

Abfrage mit Bereich (wenn IDs aufeinanderfolgend sind)

Wenn die IDs einen kontinuierlichen Bereich bilden, können Sie die verwenden ">" (größer als) und „<=" (kleiner oder gleich) Operatoren, um den Bereich der abzufragenden IDs anzugeben. Zum Beispiel:

<code class="go">ids := []int64{1, 2, 3, 4}
q := datastore.NewQuery("Category").Filter("Id>=", 1).Filter("Id<=", 4)</p>
<p><strong>Mehrere Abfragen ausführen</strong></p>
<p>Für IDs, die nicht in einem kontinuierlichen Bereich liegen, können Sie für jede ID im Array eine separate Abfrage ausführen. Dazu gehört das Erstellen eines neuen Abfrageobjekts für jede ID und das Filtern nach dieser ID.</p>
<pre class="brush:php;toolbar:false"><code class="go">for _, id := range ids {
    q := datastore.NewQuery("Category").Filter("Id =", id)
    // ... perform query and retrieve entities
}</code>

GetMulti Function

Wenn die Eigenschaft, nach der Sie filtern, der Entitätsschlüssel ist selbst können Sie die Funktion datastore.GetMulti() verwenden, um eine Liste von Entitäten basierend auf einem Array ihrer Schlüssel abzurufen.

<code class="go">var keys []*datastore.Key

for _, id := range ids {
    keys = append(keys, datastore.NewKey(c, "Category", "", id, nil))
}

categories := make([]Category, len(keys))
err := datastore.GetMulti(c, keys, categories)
if err != nil {
    // Handle error
}</code>

Hinweis:

Wann Wenn Sie mit der Filter()-Methode mehrere Filter angeben, werden diese mit einer UND-Verknüpfung verknüpft. Daher führt Ihr Versuch, mithilfe von q.Filter("Id =", id) nach mehreren IDs zu filtern, wahrscheinlich zu keinen übereinstimmenden Entitäten, es sei denn, alle IDs sind in derselben Entität vorhanden.

Das obige ist der detaillierte Inhalt vonWie rufe ich mithilfe von Golang Entitäten anhand eines ID-Arrays im Google App Engine-Datenspeicher ab?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn