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 回答