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>
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>
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!