2012-09-02 12 views
5

Używam NDB w GoogleAppEngine i chcę pobrać klucz lub identyfikator instancji, przekazując wiadomość e-mail do zapytania.Projekcja NDB instancji Klucz lub identyfikator

mój model wygląda mniej więcej tak:

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]) 

Po uruchomieniu kodu pojawia się następujący błąd:

BadProjectionError: Projecting on unknown property __key__ 

Jak mogę uzyskać identyfikator instancji lub klucza przez zapytań użytkowników poprzez e-mail w NDB AppEngine (np. proces logowania)?

Dzięki!

+0

mam wrażenie, że _You're Prawdopodobnie przechowywania haseł Incorrectly_ http://www.codinghorror.com/blog/2007/09/youre-probably-storing-passwords-incorrectly.html – Lipis

+0

Dlaczego? Nie przechowuję tego jako zwykłego tekstu ... –

Odpowiedz

13

Zapytanie projekcja będzie zawsze zawierać klucz, a także pola, które określają, więc jeśli keys_only nie jest wystarczająca, a następnie:

return Users.query(Users.user_email == email).get(projection=[Users.password]) 
+0

Dzięki, nie zdawałem sobie z tego sprawy! Prace! –

5

Jeśli trzeba tylko klucz klucze można spróbować tylko do zapytania:

Users.query(Users.user_email == email).get(keys_only=True) 
Powiązane problemy