0

Google Datastoreの専門家である皆様に、私は奇妙な質問をしています。 私は働いているGoogle App Engineアプリのコードを勉強しています。 私が混乱させるこれらのコード行が見つかりました。Google App Engine Datastore:エンティティのない鍵を作成して使用する

guestbook_key = ndb.Key(Greeting, DEFAULT_GUESTBOOK_NAME) 
mykey = ndb.Key( Greeting, # kind 
       str(i+1), # id 
       parent=guestbook_key # parent 
       ) 
g = Greeting(key=mykey)` 

私の質問です:存在しないエンティティのキ​​ーを親として使用することはできますか? キー「guestbook_key」を持つエンティティが作成されていないため(コード全体で検索されましたが、何も見つかりませんでした) エンティティルートを作成せずにエンティティに共通のルートを与えるためにのみ作成されますか?

+1

はい、ドキュメントには、実際のエンティティを参照しない親キーを作成できることが明示的に記載されています。 –

答えて

0

はい。 Using the ancestor path in the keyから(強調鉱山):

ndb.Key('Account', '[email protected]', 'Message', 123, 'Revision', '1') 

...

サンプルで

('Account', '[email protected]')('Message', 123)、及び ('Revision', '1')を種類識別子ペアのすべての例です。

Messageはモデルクラスではありません。リビジョンをグループ化する方法としてのみ使用され、データは保存されません。

...

あなたは直接 祖先パス内の任意のエンティティを指定するというパラメータの親を使用することができます。 Messageエンティティキーは、実際に既存のMessage実体なしRevisionエンティティの祖先/親キーとして使用されている上に引用した例では

ndb.Key('Account', '[email protected]', 'Message', 123, 'Revision', '1') 

ndb.Key('Revision', '1', parent=ndb.Key(
    'Account', '[email protected]', 'Message', 123)) 

ndb.Key('Revision', '1', parent=ndb.Key(
    'Message', 123, parent=ndb.Key('Account', '[email protected]'))) 

:次の表記はすべて 同じキーを表します。

別例えば、実際には存在しない全体のエンティティグループのルート(共通祖先)を示す。この時間:What would be the purpose of putting all datastore entities in a single group?

0

キーは何がデータストアに書き込まれる前であっても、あなたのプログラムのメモリ内だけのオブジェクトです。

エンティティをデータストアに書き込むときは、キー(完全IDまたは不完全ID)とデータそのものを指定する必要があります。

関連する問題