Google DataStoreでは、urlsafeキー値を使用してエンティティを一括取得する方法はありますか?Google Datastoreは、urlsafeを使用してバルクデータを取得します。
私は約ndb.get_multi([list])
を知っています。これは、キーのリストを取得し、より効率的な一括でエンティティを取得します。しかし、私たちのケースでは、エンティティのurlsafeキー値が埋め込まれた数百のエンティティを持つWebページがあります。最初は単一のエンティティでしか操作を行っていなかったので、urlsafe値を使用してエンティティを取得し、問題なく操作できました。さて、複数のエンティティを一度に変更する必要があり、効率的なアプローチのように聞こえるわけではありません。何かご意見は?
エンティティの鍵IDを直接使用する利点はありますか(対鍵の安全な値)? documentationのget_by_id()
は、一括してエンティティを取得できることを意味しません(IDは1つだけです)。
エンティティキーを使用してエンティティを一括して取得する唯一の方法は、ウェブページでキーを公開することはお勧めできません。これは、ページの一括操作に関して数百の実体?
ありがとう@Dan Cornilescuは説明のためにたくさんありますので、あなたが言っていることはurlsafeリストをループし、 'entity_key = ndb.Key(urlsafe = urlsafe_string)'を使用するとデータストアにアクセスしません。 urlsafeをキーに変換(_decode_)するクラス関数?その後 'ndb.get_multi()'を使うことができますが、正しいのですか? – Khaled
はい、そうです。 –
素晴らしいです、ありがとうございます。私はそれを試み、それは美しく働いた。単一のものではなく未来のリストを返す非同期バージョン 'ndb.get_multi_async()'を使い、 'get_result()'がリストに対して機能しないので、別の問題が浮かび上がった。リストをループしたくないが、これを理解する:D .. – Khaled