如何在GAE NDB中检查记录的存在?

时间:2013-12-22 12:40:10

标签: python google-app-engine app-engine-ndb

我有两个班级:

class User(ndb.Model): # key is user's email
    phone = ndb.IntegerProperty(indexed=False)
    ...

class Question(ndb.Model):
    user = ndb.KeyProperty(kind=User)
    ...

使用以下代码将用户的问题添加到数据存储区:

q = Question()
...
user = User.get_by_id(email)
if user:
    q.user = ndb.Key(User, email)

(未知用户可以添加问题)

我做得对吗?我应该以某种方式优化代码(使用keys_only?)来减少读/写NDB操作的数量?

1 个答案:

答案 0 :(得分:0)

用户是否已登录?如果是,那么您可以将userkey存储在会话中并省略get_by_id。

除此之外,get_by_id非常有效,但是如果用户实体很大,你应该考虑拆分它(因为获取更小的实体更便宜)。关于get_by_id的另一个很酷的事情是它首先使用memcache,然后是数据存储区,如果实体不在memcache中。如果用户提出了很多问题,那么实体可能会在memcache中。