Maison > développement back-end > Golang > le corps du texte

Comment récupérer des entités à l'aide d'un tableau d'identifiants dans la banque de données Google App Engine à l'aide de Golang ?

Barbara Streisand
Libérer: 2024-10-25 17:32:44
original
470 Les gens l'ont consulté

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

Interrogation de la banque de données pour les entités avec un tableau d'identifiants à l'aide de Golang

Dans la banque de données Google App Engine, il n'existe pas de prise en charge directe pour effectuer une " IN" requête pour récupérer des entités basées sur un tableau d'ID. Cependant, il existe des approches alternatives pour obtenir cette fonctionnalité.

Requête avec plage (si les ID sont consécutifs)

Si les ID forment une plage continue, vous pouvez utiliser le ">" (supérieur à) et "<=" (inférieur ou égal à) pour spécifier la plage d'ID à interroger. Par exemple :

<code class="go">ids := []int64{1, 2, 3, 4}
q := datastore.NewQuery("Category").Filter("Id>=", 1).Filter("Id<=", 4)</p>
<p><strong>Exécuter plusieurs requêtes</strong></p>
<p>Pour les ID qui ne se trouvent pas dans une plage continue, vous pouvez exécuter une requête distincte pour chaque ID du tableau. Cela implique de créer un nouvel objet Query pour chaque ID et de filtrer par cet 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>
Copier après la connexion

GetMulti Function

Si la propriété sur laquelle vous filtrez est la clé d'entité lui-même, vous pouvez utiliser la fonction datastore.GetMulti() pour récupérer une liste d'entités en fonction d'un tableau de leurs clés.

<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>
Copier après la connexion

Remarque :

Quand en utilisant la méthode Filter() pour spécifier plusieurs filtres, ils seront joints par une opération AND. Par conséquent, votre tentative de filtrer par plusieurs identifiants à l'aide de q.Filter("Id =", id) n'aboutira probablement à aucune entité correspondante à moins que tous les identifiants n'existent dans la même entité.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!