2017-10-20 5 views
1

私はgoogle cloud datastore libraryをGoogle App Engineで柔軟な環境を使用しています。祖先が何も返されないGoogle Cloudデータストアを照会します。

私はpathwayエンティティの親として使用runエンティティ持っている:私はいくつかのpathwayエンティティをフェッチした場合、彼らは正しい親

pathways = ds.query(kind='pathway', order=('-timestamp',)).fetch(limit=10) 

for pathway in pathways: 
    print(pathway.key.parent) # <Key('run', 1), project=project-name> 

しかし、私の場合を持っているように見える

ds = datastore.Client('project-name') 
parent = ds.query(kind='run', order=('-timestamp',)).fetch(1) 
parent = list(parent)[0] 

print(parent.key) # <Key('run', 1), project=project-name> 

を次のように親とフィルタリングしてみてください:

pathways = ds.query(kind='pathway', ancestor=parent.key, order=('-timestamp',)).fetch(limit=10) 

次にエラーが発生します:

google.api.core.exceptions.PreconditionFailed 
google.api.core.exceptions.PreconditionFailed: 412 no matching index found. recommended index is: 
- kind: pathway 
    ancestor: yes 
    properties: 
- name: timestamp 
    direction: desc 

親エンティティで正しくフィルタリングするにはどうすればよいですか?

答えて

2

特定のクエリを満たすために、Cloud Datastoreはインデックスを作成する必要があります。詳細は次のように定義されています。https://cloud.google.com/datastore/docs/concepts/indexes

推奨インデックスを定義すると、該当するクエリが機能するようにする必要があります。

+0

ありがとうございます!それは私はインデックスについてのビットを逃した完了したようだ。 –

関連する問題