Datastore モードの Cloud Firestore API のスタートガイド

このページでは、Datastore モードの Cloud Firestore API を使用して、単純なコマンドライン アプリケーション TaskList を作成する短い演習を行います。TaskList はタスクを保管、リスト、更新、削除するアプリケーションです。

前提条件

  1. このトピックで使用するプログラミング言語を使用して、コマンドライン アプリケーションを記述し、実行できること
    このチュートリアルを試す前に、アプリケーション開発方法の基本的な知識を習得しておいてください。また、追加の各種ライブラリをダウンロードしてインストールできることも必要となります。
  2. Google Cloud Platform Console プロジェクトの Datastore モード API が有効になっていること
    Datastore モードを使用するアプリケーションは、Datastore モード API が有効になっている Google Cloud Platform Console プロジェクトに関連付けられている必要があります。このプロジェクトはアプリケーションで使用する認証情報を提供します。この認証情報は、Google に対してアプリケーションを識別し、Datastore モード API の使用承認を得るために使用します。
    この手順に沿ってプロジェクトを作成し、そのプロジェクトに対して Datastore モード API を有効化します。さらに、gcloud auth login コマンドを使用してローカル開発環境に認証情報を設定します。プロジェクトの ID は後で使用するので、メモを取っておきます。
  3. アクティブな App Engine アプリケーション
    Datastore モード API を使用するプロジェクトには、アクティブな App Engine アプリケーションが必要となります。App Engine ダッシュボードを開き、プロジェクトにアクティブな App Engine アプリケーションがあることを確認してください。
    必要であれば、App Engine アプリケーションを作成します。このアプリケーションは無効にしないでください。

インストールとセットアップ

クライアント ライブラリをインストールし、使用する開発環境に応じた追加設定を行います。

C#

  1. Visual Studio(バージョン 2013 以上)がインストールされていることを確認します。
  2. TaskList サンプル アプリケーションをここからダウンロードします。
  3. Documents フォルダに zip のファイルを抽出します。
  4. Visual Studio でファイル dotnet-docs-samples-master\datastore\api\Datastore.sln を開きます。
  5. Visual Studio の [ソリューション エクスプローラー] ウィンドウで TaskList プロジェクトを右クリックし、[スタートアップ プロジェクトに設定] を選択します。
  6. TaskList プロジェクトをもう一度右クリックして、[プロパティ] を選択します。
  7. [プロパティ] ウィンドウで [デバッグ] をクリックし、Google Cloud Platform プロジェクトの ID を [コマンドライン引数] ボックスに入力します。

    Visual Studio の [デバッグ] ウィンドウ

  8. [ファイル] をクリックして [保存] をクリックし、変更を保存します。

  9. アプリケーションを実行します。キーボードの F5 キーを押します。

Go

  1. TaskList サンプル アプリケーションのクローンを作成します。

    go get github.com/GoogleCloudPlatform/golang-samples/datastore/tasks
    
  2. サンプルをクローンのディレクトリに移動します。

    cd $GOPATH/src/github.com/GoogleCloudPlatform/golang-samples/datastore/tasks
    
  3. コマンド プロンプトで以下を実行します。<project-id> は、使用する Google Cloud Platform プロジェクトの ID です。

    export DATASTORE_PROJECT_ID=<project-id>
    

    (Windows ユーザーは export ではなく set を使用します)

  4. アプリケーションを実行します。

    go run tasks.go
    

Java

  1. MavenJava(バージョン 7 以降)がインストールされていることを確認します。

  2. TaskList サンプル アプリケーションをここからダウンロードします。

  3. コマンド プロンプトで、次のようにダウンロード ファイルを解凍します。

    unzip master.zip
    
  4. ディレクトリを変更して、TaskList アプリケーションの保管場所に移動します。

    cd java-docs-samples-master/datastore
    
  5. 次のコマンドを実行します。<project-id> は使用する Google Cloud Platform プロジェクトの ID です。

    gcloud config set project <project-id>
    
  6. アプリケーションをコンパイルし、実行します。

    mvn clean compile
    mvn exec:java
    

Node.js

  1. Node.js 開発用に環境を準備します

  2. TaskList サンプル アプリケーションをここからダウンロードします。

  3. ダウンロード ファイルを解凍します。

    unzip master.zip
    
  4. ディレクトリを変更して、TaskList アプリケーションの保管場所に移動します。

    cd nodejs-datastore-master/samples
    
  5. 依存関係をインストールし、アプリケーションをリンクします。

    npm install
    
  6. コマンド プロンプトで以下を実行します。<project-id> は、使用する Google Cloud Platform プロジェクトの ID です。

    export GCLOUD_PROJECT=<project-id>
    

    (Windows ユーザーは export ではなく set を使用します)

  7. アプリケーションを実行します。

    node tasks.js
    

PHP

  1. PHP(バージョン 5.6 以降)と Composer がインストールされていることを確認します。
  2. TaskList サンプル アプリケーションをここからダウンロードします。
  3. ダウンロード ファイルを解凍します。

    unzip master.zip
    
  4. ディレクトリを変更して、TaskList アプリケーションの保管場所に移動します。

    cd php-docs-samples-master/datastore/tutorial
    
  5. 依存関係をインストールします。

    Composer がローカルにインストールされている場合:

    php composer.phar install
    

    Composer がグローバルにインストールされている場合:

    composer install
    
  6. アプリケーションを実行します。

    php tasks.php
    

Python

  1. Python(バージョン 2.7.9 以降)、pipvirtualenv がインストールされていることを確認します。
  2. virtualenv セッションをアクティブ化します。

    virtualenv venv
    source venv/bin/activate
    
  3. TaskList サンプル アプリケーションをここからダウンロードします。

  4. ダウンロード ファイルを解凍します。

    unzip master.zip
    
  5. ディレクトリを変更して、TaskList アプリケーションの保管場所に移動します。

    cd python-docs-samples-master/datastore/cloud-client
    
  6. 依存関係をインストールします。

    pip install -r requirements.txt
    
  7. アプリケーションを実行します。<project-id> は、使用する Google Cloud Platform プロジェクトの ID です。

    python tasks.py --project-id <project-id>
    

Ruby

  1. RubyBundler がインストールされていることを確認します。

  2. TaskList サンプル アプリケーションをここからダウンロードします。

  3. ダウンロード ファイルを解凍します。

    unzip master.zip
    
  4. TaskList アプリケーションがあるディレクトリに移動します。

    cd ruby-docs-samples-master/datastore
    
  5. 依存関係をインストールします。

    bundle install
    
  6. コマンド プロンプトで以下を実行します。<project-id> は、使用する Google Cloud Platform プロジェクトの ID です。

    export GOOGLE_CLOUD_PROJECT=<project-id>
    

    (Windows ユーザーは export ではなく set を使用します)

  7. アプリケーションを実行します。

    bundle exec ruby tasks.rb
    

承認済みサービス オブジェクトの作成

Google API のクライアント ライブラリを使用して、認証済みリクエストを Google Cloud API に送るには、以下の手順を行う必要があります。

  • リクエストに使用する認証情報を取得します。
  • この認証情報を使用するサービス オブジェクトを作成します。

これで Datastore モードのサービス オブジェクトに対してメソッドを実行し、API 呼び出しを実行できるようになります。

この例では、開発環境からアプリケーションのデフォルトの認証情報を取得して、この情報を引数として渡し、サービス オブジェクトを作成します。

承認済み Datastore モードのサービス オブジェクトを作成するための呼び出しを次に示します。

C#

Cloud Datastore 用のクライアント ライブラリをインストールして使用する方法については、Cloud Datastore のクライアント ライブラリをご覧ください。詳細については、Cloud Datastore C# API のリファレンス ドキュメントをご覧ください。

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

Cloud Datastore 用のクライアント ライブラリをインストールして使用する方法については、Cloud Datastore のクライアント ライブラリをご覧ください。詳細については、Cloud Datastore Go API のリファレンス ドキュメントをご覧ください。

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

Java

Cloud Datastore 用のクライアント ライブラリをインストールして使用する方法については、Cloud Datastore のクライアント ライブラリをご覧ください。詳細については、Cloud Datastore Java API のリファレンス ドキュメントをご覧ください。

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

Cloud Datastore 用のクライアント ライブラリをインストールして使用する方法については、Cloud Datastore のクライアント ライブラリをご覧ください。詳細については、Cloud Datastore Node.js API のリファレンス ドキュメントをご覧ください。

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

Cloud Datastore 用のクライアント ライブラリをインストールして使用する方法については、Cloud Datastore のクライアント ライブラリをご覧ください。詳細については、Cloud Datastore PHP API のリファレンス ドキュメントをご覧ください。

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

Cloud Datastore 用のクライアント ライブラリをインストールして使用する方法については、Cloud Datastore のクライアント ライブラリをご覧ください。詳細については、Cloud Datastore Python API のリファレンス ドキュメントをご覧ください。

from google.cloud import datastore

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

Ruby

Cloud Datastore 用のクライアント ライブラリをインストールして使用する方法については、Cloud Datastore のクライアント ライブラリをご覧ください。詳細については、Cloud Datastore Ruby API のリファレンス ドキュメントをご覧ください。

require "google/cloud/datastore"

@datastore = Google::Cloud::Datastore.new project: project_id

データの保存

Datastore モード内のオブジェクトはエンティティと呼ばれ、個々のエンティティには特定の種類があります。TaskList アプリケーションは、以下のプロパティを持つ Task という種類のエンティティを保存します。

  • description: タスクの説明としてユーザーが指定した文字列
  • created: タスクが最初に作成された日付
  • done: タスクが完了したかどうかを示すブール値

ユーザーが新規タスクを追加すると、TaskList アプリケーションは上記の各プロパティの値を設定した Task エンティティを作成します。

C#

Cloud Datastore 用のクライアント ライブラリをインストールして使用する方法については、Cloud Datastore のクライアント ライブラリをご覧ください。詳細については、Cloud Datastore C# API のリファレンス ドキュメントをご覧ください。

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

Cloud Datastore 用のクライアント ライブラリをインストールして使用する方法については、Cloud Datastore のクライアント ライブラリをご覧ください。詳細については、Cloud Datastore Go API のリファレンス ドキュメントをご覧ください。

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

Cloud Datastore 用のクライアント ライブラリをインストールして使用する方法については、Cloud Datastore のクライアント ライブラリをご覧ください。詳細については、Cloud Datastore Java API のリファレンス ドキュメントをご覧ください。

/**
 * 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

Cloud Datastore 用のクライアント ライブラリをインストールして使用する方法については、Cloud Datastore のクライアント ライブラリをご覧ください。詳細については、Cloud Datastore Node.js API のリファレンス ドキュメントをご覧ください。

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

Cloud Datastore 用のクライアント ライブラリをインストールして使用する方法については、Cloud Datastore のクライアント ライブラリをご覧ください。詳細については、Cloud Datastore PHP API のリファレンス ドキュメントをご覧ください。

/**
 * 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

Cloud Datastore 用のクライアント ライブラリをインストールして使用する方法については、Cloud Datastore のクライアント ライブラリをご覧ください。詳細については、Cloud Datastore Python API のリファレンス ドキュメントをご覧ください。

def add_task(client, description):
    key = client.key('Task')

    task = datastore.Entity(
        key, exclude_from_indexes=['description'])

    task.update({
        'created': datetime.datetime.utcnow(),
        'description': description,
        'done': False
    })

    client.put(task)

    return task.key

Ruby

Cloud Datastore 用のクライアント ライブラリをインストールして使用する方法については、Cloud Datastore のクライアント ライブラリをご覧ください。詳細については、Cloud Datastore Ruby API のリファレンス ドキュメントをご覧ください。

def add_task description
  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

このアプリケーションには、タスクの完了を示すために done プロパティを更新するメソッドも提供します。

C#

Cloud Datastore 用のクライアント ライブラリをインストールして使用する方法については、Cloud Datastore のクライアント ライブラリをご覧ください。詳細については、Cloud Datastore C# API のリファレンス ドキュメントをご覧ください。

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

Cloud Datastore 用のクライアント ライブラリをインストールして使用する方法については、Cloud Datastore のクライアント ライブラリをご覧ください。詳細については、Cloud Datastore Go API のリファレンス ドキュメントをご覧ください。

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

Cloud Datastore 用のクライアント ライブラリをインストールして使用する方法については、Cloud Datastore のクライアント ライブラリをご覧ください。詳細については、Cloud Datastore Java API のリファレンス ドキュメントをご覧ください。

/**
 * 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

Cloud Datastore 用のクライアント ライブラリをインストールして使用する方法については、Cloud Datastore のクライアント ライブラリをご覧ください。詳細については、Cloud Datastore Node.js API のリファレンス ドキュメントをご覧ください。

async function markDone(taskId) {
  const transaction = datastore.transaction();
  const taskKey = datastore.key(['Task', 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) {
    transaction.rollback();
  }
}

PHP

Cloud Datastore 用のクライアント ライブラリをインストールして使用する方法については、Cloud Datastore のクライアント ライブラリをご覧ください。詳細については、Cloud Datastore PHP API のリファレンス ドキュメントをご覧ください。

/**
 * 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

Cloud Datastore 用のクライアント ライブラリをインストールして使用する方法については、Cloud Datastore のクライアント ライブラリをご覧ください。詳細については、Cloud Datastore Python API のリファレンス ドキュメントをご覧ください。

def mark_done(client, task_id):
    with client.transaction():
        key = client.key('Task', task_id)
        task = client.get(key)

        if not task:
            raise ValueError(
                'Task {} does not exist.'.format(task_id))

        task['done'] = True

        client.put(task)

Ruby

Cloud Datastore 用のクライアント ライブラリをインストールして使用する方法については、Cloud Datastore のクライアント ライブラリをご覧ください。詳細については、Cloud Datastore Ruby API のリファレンス ドキュメントをご覧ください。

def mark_done task_id
  task = @datastore.find "Task", task_id

  task["done"] = true

  @datastore.save task
end

次に、Task エンティティのキーを使用して Task エンティティを削除するメソッドを実装します。

C#

Cloud Datastore 用のクライアント ライブラリをインストールして使用する方法については、Cloud Datastore のクライアント ライブラリをご覧ください。詳細については、Cloud Datastore C# API のリファレンス ドキュメントをご覧ください。

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

Cloud Datastore 用のクライアント ライブラリをインストールして使用する方法については、Cloud Datastore のクライアント ライブラリをご覧ください。詳細については、Cloud Datastore Go API のリファレンス ドキュメントをご覧ください。

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

Cloud Datastore 用のクライアント ライブラリをインストールして使用する方法については、Cloud Datastore のクライアント ライブラリをご覧ください。詳細については、Cloud Datastore Java API のリファレンス ドキュメントをご覧ください。

/**
 * 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

Cloud Datastore 用のクライアント ライブラリをインストールして使用する方法については、Cloud Datastore のクライアント ライブラリをご覧ください。詳細については、Cloud Datastore Node.js API のリファレンス ドキュメントをご覧ください。

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

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

PHP

Cloud Datastore 用のクライアント ライブラリをインストールして使用する方法については、Cloud Datastore のクライアント ライブラリをご覧ください。詳細については、Cloud Datastore PHP API のリファレンス ドキュメントをご覧ください。

/**
 * 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

Cloud Datastore 用のクライアント ライブラリをインストールして使用する方法については、Cloud Datastore のクライアント ライブラリをご覧ください。詳細については、Cloud Datastore Python API のリファレンス ドキュメントをご覧ください。

def delete_task(client, task_id):
    key = client.key('Task', task_id)
    client.delete(key)

Ruby

Cloud Datastore 用のクライアント ライブラリをインストールして使用する方法については、Cloud Datastore のクライアント ライブラリをご覧ください。詳細については、Cloud Datastore Ruby API のリファレンス ドキュメントをご覧ください。

def delete_task task_id
  task = @datastore.find "Task", task_id

  @datastore.delete task
end

クエリの実行

キーを使用して Datastore モードから直接エンティティを取得する方法に加え、アプリケーションはクエリを実行し、エンティティのプロパティ値によって該当エンティティを取得できます。一般的に、クエリは次のような要素で構成されます。

  • クエリが適用されるエンティティの種類
  • 任意の数のフィルタ(指定しなくともよい)。ある値に一致するプロパティを持つ種類を選択するフィルタなど
  • 結果を順序付けするための、任意の数の並べ替え順(指定しなくともよい)

このアプリケーションでは、Datastore モードに対して Task エンティティを返すクエリを実行し、結果を作成時間で並べ替えます。

C#

Cloud Datastore 用のクライアント ライブラリをインストールして使用する方法については、Cloud Datastore のクライアント ライブラリをご覧ください。詳細については、Cloud Datastore C# API のリファレンス ドキュメントをご覧ください。

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

Cloud Datastore 用のクライアント ライブラリをインストールして使用する方法については、Cloud Datastore のクライアント ライブラリをご覧ください。詳細については、Cloud Datastore Go API のリファレンス ドキュメントをご覧ください。

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

Cloud Datastore 用のクライアント ライブラリをインストールして使用する方法については、Cloud Datastore のクライアント ライブラリをご覧ください。詳細については、Cloud Datastore Java API のリファレンス ドキュメントをご覧ください。

/**
 * 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

Cloud Datastore 用のクライアント ライブラリをインストールして使用する方法については、Cloud Datastore のクライアント ライブラリをご覧ください。詳細については、Cloud Datastore Node.js API のリファレンス ドキュメントをご覧ください。

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

Cloud Datastore 用のクライアント ライブラリをインストールして使用する方法については、Cloud Datastore のクライアント ライブラリをご覧ください。詳細については、Cloud Datastore PHP API のリファレンス ドキュメントをご覧ください。

/**
 * 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

Cloud Datastore 用のクライアント ライブラリをインストールして使用する方法については、Cloud Datastore のクライアント ライブラリをご覧ください。詳細については、Cloud Datastore Python API のリファレンス ドキュメントをご覧ください。

def list_tasks(client):
    query = client.query(kind='Task')
    query.order = ['created']

    return list(query.fetch())

Ruby

Cloud Datastore 用のクライアント ライブラリをインストールして使用する方法については、Cloud Datastore のクライアント ライブラリをご覧ください。詳細については、Cloud Datastore Ruby API のリファレンス ドキュメントをご覧ください。

def list_tasks
  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

次の手順

このチュートリアルでは、コマンドライン アプリケーションから Datastore モード API への呼び出しを行うために必要となる、最も基本的なステップのみについて説明しています。Datastore モードは高速でスケーラブルな ACID トランザクション、SQL に似たクエリ、インデックス、その他さまざまな機能をサポートしています。

このページは役立ちましたか?評価をお願いいたします。

フィードバックを送信...

Cloud Datastore ドキュメント