0

私たちのシステムには一意のキーしかありませんが、いくつかの操作を整理して実行するために種類を使用します。 編集済み - >これは、IDの種類がわからないことを意味します。データストア無害クエリのパフォーマンスとキーによるアクセスの違いは何ですか?

私たちが持っているすべての種類のIDを照会すると非常に便利です。

Datastore does have this option。私がしたいのは、次のようなクエリを作成することです:

const query = datastore.createQuery() 
    .filter('__key__', '=', uniqueKey) 
    .limit(1); 

特定の種類のキーによるアクセスを置き換えることです。

キーとキーアクセスで頻繁にアクセスするため、small operation(これはコストがかかりません)と考えられていますが、上記のコードがキーアクセスと同じように優れているかどうかを判断しようとしています。

答えて

0

あなたが言及フィルタリング機能は、あなたが実際にフィルタリング、事前にキーを知らない場合のために主に意図された、など

あなたは、単一のエンティティを取得するために、このようなクエリを実行する必要はありませんそのキーに一致するキーがあればそれに一致します。ダイレクトキールックアップ(実際にキーアクセスがあります)によってエンティティを取得するだけで、これが推奨されます。代わりに、

datastore.get(taskKey) 
    .then((results) => { 
    // Task found. 
    const entity = results[0]; 

    // entity = { 
    // category: 'Personal', 
    // done: false, 
    // priority: 4, 
    // description: 'Learn Cloud Datastore' 
    // }; 
    console.log(entity); 
    }); 

あなたはまた、親切で、単一のIDを照会する必要はありません。Retrieving an entityから:

は、クラウドデータストアからエンティティを取得するには、ルックアップのためにそのキーを使用します対応するキー(ローカル操作であり、データストアにヒットしません)を構築し、キールックアップを実行することができます。 Kinds and identifiersから:

次の例では、識別子として、キー名を使用して種類Taskとキー、 "sampleTask" を作成します。

const taskKey = datastore.key([ 
    'Task', 
    'sampleTask' 
]); 
+0

おかげで、ダン。私の挑戦は、特定のキーが私が持っているいくつかの種類のうちの1つに入ることができ、私はあらかじめどのような種類があるかわからないということです。実際に私の現在のデザインでは1種類だけでキーをうまく使用できますが、JSONをさまざまな種類にグループ化すれば、それ以上はできません。私の質問は親切でないクエリを使用しているので、キーアクセスと同じ方法を実行します。 – JLCDev

+0

無差別なクエリのフィルタリングには、IDではなくキーが必要です。したがって、キーを最初に取得する必要があります。 –

+0

これは名前のようなものではないようですが、種類の義務的な使用を指しているようです。 Googleマニュアルから:種類がなく祖先がないクエリは、Cloud Datastoreのアプリケーションのすべてのエンティティを取得します。この種の無関係な照会には、フィルターまたはソート順をプロパティー値に含めることはできません。ただし、エンティティ・キーをフィルタリングして祖先フィルタを使用できます。キーフィルタは、プロパティ名として__key__を指定することによって使用できます。 – JLCDev

関連する問題