2

私はこの質問への答えを探し回っていましたが、お金にまったく何も見つかりませんでした。人々の考えを聞いて本当に興味があります。ここに行きます:

Google AppEngineで、いくつかのUserオブジェクトがあり、それぞれに複数のPhotoオブジェクトを含めることができるとします。Userオブジェクトは、それぞれのPhotoオブジェクトの親である必要があります。

ただし、写真ごとに短いURLを設定できるようにもしたいと思います。各写真の自動生成されたIDプロパティをBase64エンコードすることでこれらを生成するつもりでしたが、AppEngineが生成するIDはエンティティグループ間で一意であることが保証されていないため(つまり、親が異なるエンティティの場合)、これを実行できないことに気付きました。したがって、あるユーザーの子である写真は、別のユーザーの子である写真と同じIDを持っている可能性があります。

これは私を漬物に残します。私は次のいずれかを行うことができます:

  1. 私自身の一意のIDジェネレーターを考え出し、それを使用してみてください

  2. 親->子階層を失い、IDが一意になるようにします(これにはまったく熱心ではありません)

  3. この質問への答えとして提案されたいくつかの超賢いオプション

私は本当にオプション3を望んでいます。

これに対処するための最良の方法についての考えやアイデアは素晴らしいでしょう。

前もって感謝します。

編集

投稿した直後、アプリにミニURL短縮サービスを組み込むことを思いつきました。親がなく、リンクしたい写真を指す単一の「Key」プロパティを持つモデルが必要です。次に、このエンティティのIDをBase64でエンコードできます。これで完了です。どう思いますか?

4

2 に答える 2

2

親ユーザーのIDと関連する写真のIDをエンコードしてみませんか?2つの整数としてエンコードすることも/123/2、base64などの任意の形式でエンコードすることもできます。ユーザーにある種の一意の名前を選択させ、それをユーザーオブジェクトのキー名として使用できるようにすると、次のようなURLが提供されるため、UIの観点からも便利です。/photos/nick/123

于 2011-06-24T13:23:26.003 に答える
0

アイデア番号2を回避できれば、完了です。次に、キーを取得します。「URL短縮サービス」は3〜4行の単一サーブレットであり、これで完了です。

だが!

私はあなたが代償を払わなければなりません-あなたのための取引はありません。

AppEngineは、エンティティグループ内でのみトランザクションをサポートします。これは実際には、キーを持つ別のモデルに基づいた「URL短縮サービス」という後のアイデアに反発します...

問題は、「ユーザーの写真」を管理するのと同じトランザクションで管理できないため、間違ったURLになってしまう可能性があることです。

トランザクションが必要な場合は、親キーからURLを作成します。そうでない場合-親->子階層のない直接一意キーを使用します。

于 2011-06-25T01:39:09.390 に答える