4

私はwebapp2authをコードベースに実装していて、この癖を理解したいと思っていました。

models.pyで、次のように記述されていることがわかります。

新しいを作成するときにプロパティの一意性を確保するためにUser、最初 Uniqueにそれらのプロパティのレコードを作成し、すべてがうまくいけば、新しいUserレコードを保存できます::

私には、これは一意性をテストする非常に複雑な方法のように思えます。正直なところ、「create_multi」関数が何をしているのか完全には理解していません。これが、ここで少し混乱している理由かもしれません。私の思考プロセスは次のとおりです。

簡単なクエリを実行して、ユーザー名(auth.id)がデータストアに存在するかどうかを確認します。そうでない場合は、put()。

私は何かが足りないことを知っています、誰かが私にそれを説明できますか?おそらくコードがそこに入力されているので、必要に応じて複数の一意のものを簡単に作成できるという予感がありますか?

ありがとう!

psどうやら、webapp2コードはこのコーディングに触発されたようです。

4

1 に答える 1

5

そのモデルには、usernameとauth_idの2つの一意の値があります。

したがって、すべてのユーザーが同じエンティティグループに属しているわけではないため、トランザクションを使用して一意性を確認することはできません。そして、それがユニークモデルが存在する理由です。これら2つのプロパティのユニーク性を確保するためです。

私は同意します、それは非常に複雑です。しかし、他にどのようにそれをしますか?(正直な質問)

更新:一意性がそのようにチェックされる理由の詳細。

データストアの一意の制約を(安全に)適用するには、トランザクションとエンティティキーの使用の2つの方法しかありません。トランザクションは最大5つのエンティティグループに制限されており、キーを使用すると1つの一意のプロパティに制限されます。キーを使用したくない場合(たとえば、プロパティは電子メールのように変更可能である可能性があるため)、または同じ種類のより多くの一意のプロパティが本当に必要な場合は、一意性チェックのためだけに特殊な種類を作成する必要があります。あなたが投稿したリンクで多かれ少なかれそこで行われていること。

于 2012-03-16T23:51:36.493 に答える