我的数据存储区中有一个“计算”实体,例如该实体下有700万个对象。它具有以下属性(python运行时):
class Calculation(db.Model):
question = db.StringProperty(required=True)
answer = db.StringProperty()
假设'问题'属性的例子是'1 + 1','2 + 2','3 + 3'(不是很重要)。所有计算对象都以空答案属性开始。
当用户连接到应用程序时,会进行ajax调用,我的应用程序应该[1]获取具有空answer属性的Calculation对象并将其发送到用户的浏览器。然后用户的浏览器评估问题并将其发送回不同的服务器处理程序。
如何更新特定计算对象的答案属性[2]?
如果有人能为我提供[1]和[2]的代码,那就太棒了。 App Engine并没有真正的经验,而且查询内容令人困惑。如果我想尽可能多地节省服务器CPU,那么最佳解决方案是什么?
谢谢!
答案 0 :(得分:1)
我不知道我是否真的明白。但是您只需要为您的第一个ajax调用返回实体Calculation和question
的键。当用户做出回复时,您首先通过密钥获取实体并更新属性answer
。
步骤1,ajax调用以JSON(例如)返回一个问题:
# To fetch an empty answered question
qry = Calculation.All().filter('answer =', None)
ref = qry.get()
# The Json response
{ 'key': unicode(ref.key()),
'question': ref.question}
步骤2,您可以通过密钥更新实体:
# key and answer are variable from an http GET or POST request.
ref = db.get(key)
ref.answer = answer
ref.put()