实例密钥或ID的NDB投影

Mic*_*dek 5 google-app-engine python-2.7 google-cloud-datastore

我在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])
Run Code Online (Sandbox Code Playgroud)

运行代码时,我收到以下错误:

BadProjectionError: Projecting on unknown property __key__
Run Code Online (Sandbox Code Playgroud)

如何通过AppEngine的NDB中的电子邮件查询用户(例如登录过程)来获取实例ID或密钥?

谢谢!

Gre*_*reg 14

投影查询将始终包含密钥以及您指定的字段,因此如果keys_only不够,则:

return Users.query(Users.user_email == email).get(projection=[Users.password])
Run Code Online (Sandbox Code Playgroud)


Pet*_*ego 5

如果您只需要Key,则可以尝试仅使用密钥查询:

Users.query(Users.user_email == email).get(keys_only=True)
Run Code Online (Sandbox Code Playgroud)