5

GoogleAppEngineでNDBを使用していますが、クエリに電子メールを渡してインスタンスのキーまたはIDを取得したいと考えています。

私のモデルは次のようになります。

class Users(ndb.Model):
    user_name = ndb.StringProperty(required=True)
    user_email = ndb.StringProperty(required=True)
    user_password = ndb.StringProperty(required=True)

    @classmethod
    def get_password_by_email(cls, email):
        return Users.query(Users.user_email == email).get(projection=[Users.key, Users.user_password])

コードを実行すると、次のエラーが発生します。

BadProjectionError: Projecting on unknown property __key__

AppEngineのNDB(ログインプロセスなど)で電子メールを介してユーザーにクエリを実行して、インスタンスIDまたはキーを取得するにはどうすればよいですか?

ありがとう!

4

2 に答える 2

15

射影クエリには、指定したフィールドだけでなくキーも常に含まれるため、keys_onlyでは不十分な場合は、次のようにします。

return Users.query(Users.user_email == email).get(projection=[Users.password])
于 2012-09-02T18:50:39.300 に答える
5

キーのみが必要な場合は、キーのみのクエリを試すことができます。

Users.query(Users.user_email == email).get(keys_only=True)
于 2012-09-02T18:45:08.890 に答える