Primeiros passos com o Firestore na API Datastore mode

Nesta página, apresentamos um breve exercício de criação de um aplicativo TaskList de linha de comando simples com a API Firestore in Datastore mode. Este aplicativo armazena, lista, atualiza e remove tarefas.

Pré-requisitos

  1. Capacidade de gravar e executar um aplicativo de linha de comando nas linguagens de programação usadas neste tópico
    Além de um entendimento básico de como desenvolver aplicativos, é necessário fazer o download e instalar outras bibliotecas antes de tentar este tutorial.
  2. Um projeto do Console do Google Cloud com a API Datastore mode ativada
    Os aplicativos que usam o modo Datastore devem estar associados a um projeto do Console do Google Cloud com a API Datastore mode ativada. Esse projeto fornece as credenciais de autenticação que você usa no aplicativo para que ele seja identificado pelo Google e autorizado a usar a API Datastore mode.
    Siga estas instruções para criar um projeto, ative a API Datastore mode para ele e configure seu ambiente de desenvolvimento local com credenciais de autenticação usando o comando gcloud auth login , Anote o código do projeto, ele será usado posteriormente.
  3. Um aplicativo ativo do App Engine
    Projetos que usam a API Datastore mode requerem um aplicativo ativo do App Engine. Abra o painel do App Engine e confirme se o projeto tem um aplicativo ativo do App Engine.
    Crie um aplicativo do App Engine, se necessário. O app não pode ser desativado.

Instalação e configuração

Instale bibliotecas de cliente e defina as configurações adicionais para o ambiente de desenvolvimento.

C#

  1. Verifique se você tem o Visual Studio (versão 2013 ou posterior) instalado.
  2. Faça o download do aplicativo de amostra TaskList aqui.
  3. Extraia os arquivos do zip em um diretório na pasta Documentos.
  4. No Visual Studio, abra o arquivo dotnet-docs-samples-master\datastore\api\Datastore.sln.
  5. Na janela Gerenciador de Soluções do Visual Studio, clique com o botão direito do mouse no projeto TaskList e selecione Definir como projeto de inicialização.
  6. Clique com o botão direito do mouse no projeto TaskList novamente e selecione Propriedades.
  7. Na janela Propriedades, clique em Depurar e digite o ID do projeto do Google Cloud Platform na caixa Argumentos da linha de comando:.

    Janela de depuração do Visual Studio

  8. Clique em Arquivo e, em seguida, em Salvar para salvar suas alterações.

  9. Execute o aplicativo. Pressione F5 no teclado.

Go

  1. Clone o aplicativo de amostra TaskList.

    go get github.com/GoogleCloudPlatform/golang-samples/datastore/tasks
    
  2. Altere os diretórios em que você clonou a amostra:

    cd $GOPATH/src/github.com/GoogleCloudPlatform/golang-samples/datastore/tasks
    
  3. Em um prompt de comando, execute o seguinte comando, em que <project-id> é o ID do seu projeto do Google Cloud Platform.

    export DATASTORE_PROJECT_ID=<project-id>
    

    Usuários do Windows: use set em vez de export.

  4. Execute o aplicativo.

    go run tasks.go
    

Java

  1. Verifique se o Maven e o Java (versão 7 ou mais recente) estão instalados.

  2. Faça o download do aplicativo de amostra TaskList aqui.

  3. No prompt de comando, descompacte o download:

    unzip master.zip
    
  4. Altere os diretórios para o aplicativo TaskList:

    cd java-docs-samples-master/datastore
    
  5. Execute o seguinte comando, em que <project-id> é o ID do seu projeto do Google Cloud Platform.

    gcloud config set project <project-id>
    
  6. Compile e execute o aplicativo.

    mvn clean compile
    mvn exec:java
    

Node.js

  1. Prepare o ambiente para desenvolvimento em Node.js.

  2. Faça o download do aplicativo de amostra TaskList aqui.

  3. Descompacte o download:

    unzip master.zip
    
  4. Altere os diretórios para o aplicativo TaskList:

    cd nodejs-datastore-master/samples
    
  5. Instale as dependências e vincule o aplicativo:

    npm install
    
  6. Em um prompt de comando, execute o seguinte comando, em que <project-id> é o ID do seu projeto do Google Cloud Platform.

    export GCLOUD_PROJECT=<project-id>
    

    Usuários do Windows: use set em vez de export.

  7. Execute o aplicativo.

    node tasks.js
    

PHP

  1. Certifique-se de ter o PHP (versão 5.6 ou posterior) e o Composer instalados.
  2. Faça o download do aplicativo de amostra TaskList aqui.
  3. Descompacte o download:

    unzip master.zip
    
  4. Altere os diretórios para o aplicativo TaskList:

    cd php-docs-samples-master/datastore/tutorial
    
  5. Instale as dependências.

    Se o Composer estiver instalado localmente:

    php composer.phar install
    

    Se o Composer estiver instalado globalmente:

    composer install
    
  6. Execute o aplicativo.

    php tasks.php
    

Python

  1. Verifique se o Python (versão 2.7.9 ou posterior), o pip e o virtualenv estão instalados.
  2. Ative uma sessão virtualenv.

    virtualenv venv
    source venv/bin/activate
    
  3. Faça o download do aplicativo de amostra TaskList aqui.

  4. Descompacte o download:

    unzip master.zip
    
  5. Altere os diretórios para o aplicativo TaskList:

    cd python-docs-samples-master/datastore/cloud-client
    
  6. Instale as dependências:

    pip install -r requirements.txt
    
  7. Execute o aplicativo. Use o ID do seu projeto do Google Cloud Platform para <project-id>.

    python tasks.py new project-id
    

Ruby

  1. Verifique se o Ruby e o Bundler estão instalados.

  2. Faça o download do aplicativo de amostra TaskList aqui.

  3. Descompacte o download:

    unzip master.zip
    
  4. Altere os diretórios para o aplicativo TaskList:

    cd google-cloud-ruby-master/google-cloud-datastore/samples
    
  5. Instale as dependências:

    bundle install
    
  6. Em um prompt de comando, execute o seguinte comando, em que <project-id> é o ID do seu projeto do Google Cloud Platform.

    export GOOGLE_CLOUD_PROJECT=<project-id>
    

    Usuários do Windows: use set em vez de export.

  7. Execute o aplicativo.

    bundle exec ruby tasks.rb
    

Como criar um objeto de serviço autorizado

Para fazer solicitações autenticadas nas APIs do Google Cloud usando as bibliotecas de cliente das APIs do Google, é preciso:

  • buscar a credencial a ser usada nas solicitações;
  • criar um objeto de serviço que usa essa credencial.

Em seguida, faça chamadas para APIs chamando métodos no objeto de serviço do Datastore.

Neste exemplo, você buscará o Application Default Credentials do ambiente e o transferirá como um argumento para criar o objeto de serviço.

Veja o chamada para criar o objeto de serviço autorizado no modo Datastore:

C#

Para saber como instalar e usar a biblioteca de cliente do Cloud Datastore, consulte Bibliotecas de cliente do Cloud Datastore. Para mais informações, consulte a documentação de referência da API do Cloud Datastore para C#.

// Create an authorized Datastore service using Application Default Credentials.
_db = DatastoreDb.Create(projectId);
// Create a Key factory to construct keys associated with this project.
_keyFactory = _db.CreateKeyFactory("Task");

Go

Para saber como instalar e usar a biblioteca de cliente do Cloud Datastore, consulte Bibliotecas de cliente do Cloud Datastore. Para mais informações, consulte a documentação de referência da API do Cloud Datastore para Go.

ctx := context.Background()
client, err := datastore.NewClient(ctx, projID)

Java

Para saber como instalar e usar a biblioteca de cliente do Cloud Datastore, consulte Bibliotecas de cliente do Cloud Datastore. Para mais informações, consulte a documentação de referência da API do Cloud Datastore para Java.

// Create an authorized Datastore service using Application Default Credentials.
private final Datastore datastore = DatastoreOptions.getDefaultInstance().getService();

// Create a Key factory to construct keys associated with this project.
private final KeyFactory keyFactory = datastore.newKeyFactory().setKind("Task");

Node.js

Para saber como instalar e usar a biblioteca de cliente do Cloud Datastore, consulte Bibliotecas de cliente do Cloud Datastore. Para mais informações, consulte a documentação de referência da API do Cloud Datastore para Node.js.

// By default, the client will authenticate using the service account file
// specified by the GOOGLE_APPLICATION_CREDENTIALS environment variable and use
// the project specified by the GCLOUD_PROJECT environment variable. See
// https://googlecloudplatform.github.io/google-cloud-node/#/docs/datastore/latest/guides/authentication
const {Datastore} = require('@google-cloud/datastore');

// Creates a client
const datastore = new Datastore();

PHP

Para saber como instalar e usar a biblioteca de cliente do Cloud Datastore, consulte Bibliotecas de cliente do Cloud Datastore. Para mais informações, consulte a documentação de referência da API do Cloud Datastore para PHP.

use Google\Cloud\Datastore\DatastoreClient;

/**
 * Create a Cloud Datastore client.
 *
 * @param string $projectId
 * @return DatastoreClient
 */
function build_datastore_service($projectId)
{
    $datastore = new DatastoreClient(['projectId' => $projectId]);
    return $datastore;
}

Python

Para saber como instalar e usar a biblioteca de cliente do Cloud Datastore, consulte Bibliotecas de cliente do Cloud Datastore. Para mais informações, consulte a documentação de referência da API do Cloud Datastore para Python.

from google.cloud import datastore

def create_client(project_id):
    return datastore.Client(project_id)

Ruby

Para saber como instalar e usar a biblioteca de cliente do Cloud Datastore, consulte Bibliotecas de cliente do Cloud Datastore. Para mais informações, consulte a documentação de referência da API do Cloud Datastore para Ruby.

require "google/cloud/datastore"

datastore = Google::Cloud::Datastore.new

Como armazenar dados

Os objetos no Datastore são conhecidos como entidades, e cada entidade é de um tipo específico. O aplicativo TaskList armazenará entidades do tipo Task, com as seguintes propriedades:

  • description: uma string especificada pelo usuário como a descrição da tarefa
  • created: uma data que mostra quando a tarefa foi criada inicialmente
  • done: um booleano que indica se a tarefa foi concluída

Quando o usuário adiciona uma nova tarefa, o aplicativo cria uma entidade Task com valores para as propriedades listadas acima:

C#

Para saber como instalar e usar a biblioteca de cliente do Cloud Datastore, consulte Bibliotecas de cliente do Cloud Datastore. Para mais informações, consulte a documentação de referência da API do Cloud Datastore para C#.

/// <summary>
///  Adds a task entity to the Datastore
/// </summary>
/// <param name="description">The task description.</param>
/// <returns>The key of the entity.</returns>
Key AddTask(string description)
{
    Entity task = new Entity()
    {
        Key = _keyFactory.CreateIncompleteKey(),
        ["description"] = new Value()
        {
            StringValue = description,
            ExcludeFromIndexes = true
        },
        ["created"] = DateTime.UtcNow,
        ["done"] = false
    };
    return _db.Insert(task);
}

Go

Para saber como instalar e usar a biblioteca de cliente do Cloud Datastore, consulte Bibliotecas de cliente do Cloud Datastore. Para mais informações, consulte a documentação de referência da API do Cloud Datastore para Go.

// Task is the model used to store tasks in the datastore.
type Task struct {
	Desc    string    `datastore:"description"`
	Created time.Time `datastore:"created"`
	Done    bool      `datastore:"done"`
	id      int64     // The integer ID used in the datastore.
}

// AddTask adds a task with the given description to the datastore,
// returning the key of the newly created entity.
func AddTask(ctx context.Context, client *datastore.Client, desc string) (*datastore.Key, error) {
	task := &Task{
		Desc:    desc,
		Created: time.Now(),
	}
	key := datastore.IncompleteKey("Task", nil)
	return client.Put(ctx, key, task)
}

Java

Para saber como instalar e usar a biblioteca de cliente do Cloud Datastore, consulte Bibliotecas de cliente do Cloud Datastore. Para mais informações, consulte a documentação de referência da API do Cloud Datastore para Java.

/**
 * Adds a task entity to the Datastore.
 *
 * @param description The task description
 * @return The {@link Key} of the entity
 * @throws DatastoreException if the ID allocation or put fails
 */
Key addTask(String description) {
  Key key = datastore.allocateId(keyFactory.newKey());
  Entity task = Entity.newBuilder(key)
      .set("description", StringValue.newBuilder(description).setExcludeFromIndexes(true).build())
      .set("created", Timestamp.now())
      .set("done", false)
      .build();
  datastore.put(task);
  return key;
}

Node.js

Para saber como instalar e usar a biblioteca de cliente do Cloud Datastore, consulte Bibliotecas de cliente do Cloud Datastore. Para mais informações, consulte a documentação de referência da API do Cloud Datastore para Node.js.

async function addTask(description) {
  const taskKey = datastore.key('Task');
  const entity = {
    key: taskKey,
    data: [
      {
        name: 'created',
        value: new Date().toJSON(),
      },
      {
        name: 'description',
        value: description,
        excludeFromIndexes: true,
      },
      {
        name: 'done',
        value: false,
      },
    ],
  };

  try {
    await datastore.save(entity);
    console.log(`Task ${taskKey.id} created successfully.`);
  } catch (err) {
    console.error('ERROR:', err);
  }
}

PHP

Para saber como instalar e usar a biblioteca de cliente do Cloud Datastore, consulte Bibliotecas de cliente do Cloud Datastore. Para mais informações, consulte a documentação de referência da API do Cloud Datastore para PHP.

/**
 * Create a new task with a given description.
 *
 * @param DatastoreClient $datastore
 * @param $description
 * @return Google\Cloud\Datastore\Entity
 */
function add_task(DatastoreClient $datastore, $description)
{
    $taskKey = $datastore->key('Task');
    $task = $datastore->entity(
        $taskKey,
        [
            'created' => new DateTime(),
            'description' => $description,
            'done' => false
        ],
        ['excludeFromIndexes' => ['description']]
    );
    $datastore->insert($task);
    return $task;
}

Python

Para saber como instalar e usar a biblioteca de cliente do Cloud Datastore, consulte Bibliotecas de cliente do Cloud Datastore. Para mais informações, consulte a documentação de referência da API do Cloud Datastore para Python.

from google.cloud import datastore

def add_task(client: datastore.Client, description: str):
    # Create an incomplete key for an entity of kind "Task". An incomplete
    # key is one where Datastore will automatically generate an Id
    key = client.key("Task")

    # Create an unsaved Entity object, and tell Datastore not to index the
    # `description` field
    task = datastore.Entity(key, exclude_from_indexes=["description"])

    # Apply new field values and save the Task entity to Datastore
    task.update(
        {
            "created": datetime.datetime.utcnow(),
            "description": description,
            "done": False,
        }
    )
    client.put(task)
    return task.key

Ruby

Para saber como instalar e usar a biblioteca de cliente do Cloud Datastore, consulte Bibliotecas de cliente do Cloud Datastore. Para mais informações, consulte a documentação de referência da API do Cloud Datastore para Ruby.

def add_task description
  require "google/cloud/datastore"

  datastore = Google::Cloud::Datastore.new

  task = datastore.entity "Task" do |t|
    t["description"] = description
    t["created"]     = Time.now
    t["done"]        = false
    t.exclude_from_indexes! "description", true
  end

  datastore.save task

  puts task.key.id

  task.key.id
end

Para esse aplicativo, também forneceremos um método de atualização da propriedade done, para indicar que a tarefa foi concluída:

C#

Para saber como instalar e usar a biblioteca de cliente do Cloud Datastore, consulte Bibliotecas de cliente do Cloud Datastore. Para mais informações, consulte a documentação de referência da API do Cloud Datastore para C#.

/// <summary>
/// Marks a task entity as done.
/// </summary>
/// <param name="id">The ID of the task entity as given by Key.</param>
/// <returns>true if the task was found.</returns>
bool MarkDone(long id)
{
    using (var transaction = _db.BeginTransaction())
    {
        Entity task = transaction.Lookup(_keyFactory.CreateKey(id));
        if (task != null)
        {
            task["done"] = true;
            transaction.Update(task);
        }
        transaction.Commit();
        return task != null;
    }
}

Go

Para saber como instalar e usar a biblioteca de cliente do Cloud Datastore, consulte Bibliotecas de cliente do Cloud Datastore. Para mais informações, consulte a documentação de referência da API do Cloud Datastore para Go.

// MarkDone marks the task done with the given ID.
func MarkDone(ctx context.Context, client *datastore.Client, taskID int64) error {
	// Create a key using the given integer ID.
	key := datastore.IDKey("Task", taskID, nil)

	// In a transaction load each task, set done to true and store.
	_, err := client.RunInTransaction(ctx, func(tx *datastore.Transaction) error {
		var task Task
		if err := tx.Get(key, &task); err != nil {
			return err
		}
		task.Done = true
		_, err := tx.Put(key, &task)
		return err
	})
	return err
}

Java

Para saber como instalar e usar a biblioteca de cliente do Cloud Datastore, consulte Bibliotecas de cliente do Cloud Datastore. Para mais informações, consulte a documentação de referência da API do Cloud Datastore para Java.

/**
 * Marks a task entity as done.
 *
 * @param id The ID of the task entity as given by {@link Key#id()}
 * @return true if the task was found, false if not
 * @throws DatastoreException if the transaction fails
 */
boolean markDone(long id) {
  Transaction transaction = datastore.newTransaction();
  try {
    Entity task = transaction.get(keyFactory.newKey(id));
    if (task != null) {
      transaction.put(Entity.newBuilder(task).set("done", true).build());
    }
    transaction.commit();
    return task != null;
  } finally {
    if (transaction.isActive()) {
      transaction.rollback();
    }
  }
}

Node.js

Para saber como instalar e usar a biblioteca de cliente do Cloud Datastore, consulte Bibliotecas de cliente do Cloud Datastore. Para mais informações, consulte a documentação de referência da API do Cloud Datastore para Node.js.

async function markDone(taskId) {
  const transaction = datastore.transaction();
  const taskKey = datastore.key(['Task', datastore.int(taskId)]);

  try {
    await transaction.run();
    const [task] = await transaction.get(taskKey);
    task.done = true;
    transaction.save({
      key: taskKey,
      data: task,
    });
    await transaction.commit();
    console.log(`Task ${taskId} updated successfully.`);
  } catch (err) {
    await transaction.rollback();
  }
}

PHP

Para saber como instalar e usar a biblioteca de cliente do Cloud Datastore, consulte Bibliotecas de cliente do Cloud Datastore. Para mais informações, consulte a documentação de referência da API do Cloud Datastore para PHP.

/**
 * Mark a task with a given id as done.
 *
 * @param DatastoreClient $datastore
 * @param int $taskId
 */
function mark_done(DatastoreClient $datastore, $taskId)
{
    $taskKey = $datastore->key('Task', $taskId);
    $transaction = $datastore->transaction();
    $task = $transaction->lookup($taskKey);
    $task['done'] = true;
    $transaction->upsert($task);
    $transaction->commit();
}

Python

Para saber como instalar e usar a biblioteca de cliente do Cloud Datastore, consulte Bibliotecas de cliente do Cloud Datastore. Para mais informações, consulte a documentação de referência da API do Cloud Datastore para Python.

from google.cloud import datastore

def mark_done(client: datastore.Client, task_id: Union[str, int]):
    with client.transaction():
        # Create a key for an entity of kind "Task", and with the supplied
        # `task_id` as its Id
        key = client.key("Task", task_id)
        # Use that key to load the entity
        task = client.get(key)

        if not task:
            raise ValueError(f"Task {task_id} does not exist.")

        # Update a field indicating that the associated
        # work has been completed
        task["done"] = True

        # Persist the change back to Datastore
        client.put(task)

Ruby

Para saber como instalar e usar a biblioteca de cliente do Cloud Datastore, consulte Bibliotecas de cliente do Cloud Datastore. Para mais informações, consulte a documentação de referência da API do Cloud Datastore para Ruby.

def mark_done task_id
  require "google/cloud/datastore"

  datastore = Google::Cloud::Datastore.new

  task = datastore.find "Task", task_id

  task["done"] = true

  datastore.save task
end

Este é o método para excluir uma entidade Task, usando a chave da entidade Task:

C#

Para saber como instalar e usar a biblioteca de cliente do Cloud Datastore, consulte Bibliotecas de cliente do Cloud Datastore. Para mais informações, consulte a documentação de referência da API do Cloud Datastore para C#.

/// <summary>
/// Deletes a task entity.
/// </summary>
/// <param name="id">The ID of the task entity as given by Key.</param>
void DeleteTask(long id)
{
    _db.Delete(_keyFactory.CreateKey(id));
}

Go

Para saber como instalar e usar a biblioteca de cliente do Cloud Datastore, consulte Bibliotecas de cliente do Cloud Datastore. Para mais informações, consulte a documentação de referência da API do Cloud Datastore para Go.

// DeleteTask deletes the task with the given ID.
func DeleteTask(ctx context.Context, client *datastore.Client, taskID int64) error {
	return client.Delete(ctx, datastore.IDKey("Task", taskID, nil))
}

Java

Para saber como instalar e usar a biblioteca de cliente do Cloud Datastore, consulte Bibliotecas de cliente do Cloud Datastore. Para mais informações, consulte a documentação de referência da API do Cloud Datastore para Java.

/**
 * Deletes a task entity.
 *
 * @param id The ID of the task entity as given by {@link Key#id()}
 * @throws DatastoreException if the delete fails
 */
void deleteTask(long id) {
  datastore.delete(keyFactory.newKey(id));
}

Node.js

Para saber como instalar e usar a biblioteca de cliente do Cloud Datastore, consulte Bibliotecas de cliente do Cloud Datastore. Para mais informações, consulte a documentação de referência da API do Cloud Datastore para Node.js.

async function deleteTask(taskId) {
  const taskKey = datastore.key(['Task', datastore.int(taskId)]);

  await datastore.delete(taskKey);
  console.log(`Task ${taskId} deleted successfully.`);
}

PHP

Para saber como instalar e usar a biblioteca de cliente do Cloud Datastore, consulte Bibliotecas de cliente do Cloud Datastore. Para mais informações, consulte a documentação de referência da API do Cloud Datastore para PHP.

/**
 * Delete a task with a given id.
 *
 * @param DatastoreClient $datastore
 * @param $taskId
 */
function delete_task(DatastoreClient $datastore, $taskId)
{
    $taskKey = $datastore->key('Task', $taskId);
    $datastore->delete($taskKey);
}

Python

Para saber como instalar e usar a biblioteca de cliente do Cloud Datastore, consulte Bibliotecas de cliente do Cloud Datastore. Para mais informações, consulte a documentação de referência da API do Cloud Datastore para Python.

from google.cloud import datastore

def delete_task(client: datastore.Client, task_id: Union[str, int]):
    # Create a key for an entity of kind "Task", and with the supplied
    # `task_id` as its Id
    key = client.key("Task", task_id)
    # Use that key to delete its associated document, if it exists
    client.delete(key)

Ruby

Para saber como instalar e usar a biblioteca de cliente do Cloud Datastore, consulte Bibliotecas de cliente do Cloud Datastore. Para mais informações, consulte a documentação de referência da API do Cloud Datastore para Ruby.

def delete_task task_id
  require "google/cloud/datastore"

  datastore = Google::Cloud::Datastore.new

  task = datastore.find "Task", task_id

  datastore.delete task
end

Como executar uma consulta

Além de recuperar entidades do Datastore diretamente por meio das chaves delas, um aplicativo pode realizar uma consulta para recuperar as entidades usando os valores das propriedades delas. Uma consulta típica inclui:

  • um tipo de entidade ao qual a consulta se aplica
  • zero ou mais filtros, por exemplo, para selecionar os tipos cujas propriedades correspondem a um valor
  • zero ou mais ordens de classificação, para colocar os resultados em sequência.

Para este aplicativo, consultaremos o modo Datastore para entidades Task classificadas por tempo de criação:

C#

Para saber como instalar e usar a biblioteca de cliente do Cloud Datastore, consulte Bibliotecas de cliente do Cloud Datastore. Para mais informações, consulte a documentação de referência da API do Cloud Datastore para C#.

/// <summary>
/// Returns a list of all task entities in ascending order of creation time.
/// </summary>
IEnumerable<Entity> ListTasks()
{
    Query query = new Query("Task")
    {
        Order = { { "created", PropertyOrder.Types.Direction.Descending } }
    };
    return _db.RunQuery(query).Entities;
}

Go

Para saber como instalar e usar a biblioteca de cliente do Cloud Datastore, consulte Bibliotecas de cliente do Cloud Datastore. Para mais informações, consulte a documentação de referência da API do Cloud Datastore para Go.

// ListTasks returns all the tasks in ascending order of creation time.
func ListTasks(ctx context.Context, client *datastore.Client) ([]*Task, error) {
	var tasks []*Task

	// Create a query to fetch all Task entities, ordered by "created".
	query := datastore.NewQuery("Task").Order("created")
	keys, err := client.GetAll(ctx, query, &tasks)
	if err != nil {
		return nil, err
	}

	// Set the id field on each Task from the corresponding key.
	for i, key := range keys {
		tasks[i].id = key.ID
	}

	return tasks, nil
}

Java

Para saber como instalar e usar a biblioteca de cliente do Cloud Datastore, consulte Bibliotecas de cliente do Cloud Datastore. Para mais informações, consulte a documentação de referência da API do Cloud Datastore para Java.

/**
 * Returns a list of all task entities in ascending order of creation time.
 *
 * @throws DatastoreException if the query fails
 */
Iterator<Entity> listTasks() {
  Query<Entity> query =
      Query.newEntityQueryBuilder().setKind("Task").setOrderBy(OrderBy.asc("created")).build();
  return datastore.run(query);
}

Node.js

Para saber como instalar e usar a biblioteca de cliente do Cloud Datastore, consulte Bibliotecas de cliente do Cloud Datastore. Para mais informações, consulte a documentação de referência da API do Cloud Datastore para Node.js.

async function listTasks() {
  const query = datastore.createQuery('Task').order('created');

  const [tasks] = await datastore.runQuery(query);
  console.log('Tasks:');
  tasks.forEach(task => {
    const taskKey = task[datastore.KEY];
    console.log(taskKey.id, task);
  });
}

PHP

Para saber como instalar e usar a biblioteca de cliente do Cloud Datastore, consulte Bibliotecas de cliente do Cloud Datastore. Para mais informações, consulte a documentação de referência da API do Cloud Datastore para PHP.

/**
 * Return an iterator for all the tasks in ascending order of creation time.
 *
 * @param DatastoreClient $datastore
 * @return EntityIterator<Google\Cloud\Datastore\Entity>
 */
function list_tasks(DatastoreClient $datastore)
{
    $query = $datastore->query()
        ->kind('Task')
        ->order('created');
    return $datastore->runQuery($query);
}

Python

Para saber como instalar e usar a biblioteca de cliente do Cloud Datastore, consulte Bibliotecas de cliente do Cloud Datastore. Para mais informações, consulte a documentação de referência da API do Cloud Datastore para Python.

from google.cloud import datastore

def list_tasks(client: datastore.Client):
    # Create a query against all of your objects of kind "Task"
    query = client.query(kind="Task")
    query.order = ["created"]

    return list(query.fetch())

Ruby

Para saber como instalar e usar a biblioteca de cliente do Cloud Datastore, consulte Bibliotecas de cliente do Cloud Datastore. Para mais informações, consulte a documentação de referência da API do Cloud Datastore para Ruby.

def list_tasks
  require "google/cloud/datastore"

  datastore = Google::Cloud::Datastore.new

  query = datastore.query("Task").order("created")
  tasks = datastore.run query

  tasks.each do |t|
    puts t["description"]
    puts t["done"] ? "  Done" : "  Not Done"
    puts "  ID: #{t.key.id}"
  end
end

A seguir

Este tutorial abrange apenas as etapas mais básicas necessárias para fazer chamadas para a API do modo Datastore a partir de um aplicativo de linha de comando. O Datastore é compatível com transações ACID rápidas e altamente escalonáveis, como consultas semelhantes a SQL, índices e mais.