Recupera resultados de consultas

Después de construir una consulta, se pueden especificar opciones de recuperación para tener más control sobre los resultados que se muestran. Accede a consultas de almacén de datos para obtener más información acerca de cómo estructurar consultas en tu aplicación.

Itera a través de los resultados de la consulta

Cuando iteras sobre los resultados de una consulta mediante el método Run de un valor Query, Cloud Datastore recupera los resultados por lotes. De forma predeterminada, cada lote contiene 20 resultados. Puedes seguir iterando a través de los resultados hasta que se muestren todos o hasta que se agote el tiempo de espera de la solicitud.

Si quieres iterar sobre cada entidad que coincide con la consulta, usa el método Run para obtener un Iterator, con el que puedes recorrer cada entidad mediante el método Next de Iterator.

q := datastore.NewQuery("Person")
t := q.Run(ctx)
for {
	var p Person
	k, err := t.Next(&p)
	if err == datastore.Done {
		break // No further entities match the query.
	}
	if err != nil {
		log.Errorf(ctx, "fetching next Person: %v", err)
		break
	}
	// Do something with Person p and Key k
	doSomething(k, p)
}

Para recuperar todas las entidades que coinciden con la consulta a la vez, usa el método GetAll.

q := datastore.NewQuery("Person")
var people []Person
keys, err := q.GetAll(ctx, &people)
if err != nil {
	log.Errorf(ctx, "fetching people: %v", err)
	return
}
for i, p := range people {
	k := keys[i]
	// Do something with Person p and Key k
	doSomething(k, p)
}

Cómo recuperar propiedades seleccionadas de una entidad

Para recuperar solo las propiedades seleccionadas de una entidad, en lugar de la entidad completa, usa una consulta de proyección. Este tipo de consulta se ejecuta más rápido y cuesta menos que las que muestran entidades completas.

Del mismo modo, una consulta de solo claves ahorra tiempo y recursos porque solo muestra las claves de las entidades con las que coincide, en lugar de las entidades completas en sí. Para crear este tipo de consulta, llama al método KeysOnly cuando construyas la Query:

q := datastore.NewQuery("Person").KeysOnly()

Establece un límite para tu consulta

Puedes especificar un límite para tu consulta a fin de controlar el número máximo de resultados que se muestran en un lote. En el siguiente ejemplo, se recuperan las cinco personas más altas de Cloud Datastore:

q := datastore.NewQuery("Person").Order("-Height").Limit(5)
var people []Person
_, err := q.GetAll(ctx, &people)
// check err

for _, p := range people {
	log.Infof(ctx, "%s %s, %d inches tall", p.FirstName, p.LastName, p.Height)
}

Próximos pasos