2017-04-18 10 views
0

リクエストが完了したときに、データストアへのバッチリクエストでレコードの順序が保持されるのでしょうか?Google Cloud Datastoreのバッチ操作シーケンス

標準のgoogle-cloud/datastoreクライアントライブラリを使用して、このようなバッチ処理リクエストを実行しています(Datastoreのドキュメントから)。

const keys = [taskKey1, taskKey2]; 

datastore.get(keys) 
    .then((results) => { 
    // Tasks retrieved successfully. 
    const tasks = results[0]; 

    console.log(tasks); 
    }); 

結果はキー配列と同じ順序であると思われますが、実際の例ではそうではありません。

私は間違っているのですか、Google Datastoreはバッチ処理で注文を保存していませんか?

答えて

1

注文した結果を得るには、クエリを使用する必要があります。まず、keyの値でフィルターをかけ、必要なプロパティーで並べ替えます。

は、より多くの情報のため、これらのドキュメントを参照してください:

How to filter by Key

How to order results

+0

実はそれは私が探してるものではありません。私はこのキーを使ってこのエンティティを正確に取得する必要があります。 Btw、ダイレクト・キー・フェッチと問合せフェッチ・ウェイのパフォーマンスはどうですか? – QuestionAndAnswer

+1

私が理解しているように、Datastoreはデフォルトでエンティティをキー値で並べ替えます。異なるソートを決定するためにクエリを使用しない限り、キーで順序付けされた一致するエンティティを取得する必要があります。アプリケーションで結果をソートする必要があるようです(データストアコマンドで元のソートを変換できないと仮定して)。パフォーマンスに関しては、 'get()'メソッドは 'key'フィルタを使ったクエリより速くなければなりませんが、毎日数十万回または数百万回のリクエストを実行しない限り、大きな違いはありません。 –

+0

現在の実装方法です。私のコードでManuakソーティング。しかし、私は本当にこの解決策が嫌いです。 Siは、今のところ私はそれを残して、おそらくDatastoreの開発者は、この問題を将来解決するものを紹介します。 – QuestionAndAnswer

関連する問題