我在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或密钥?
谢谢!
答案 0 :(得分:14)
投影查询将始终包含密钥以及您指定的字段,因此如果keys_only不够,则:
return Users.query(Users.user_email == email).get(projection=[Users.password])
答案 1 :(得分:5)
如果您只需要Key,则可以尝试仅使用密钥查询:
Users.query(Users.user_email == email).get(keys_only=True)