0
我在我的记录中引入了一个名为timestamp的新字段。现在我想浏览所有的旧记录并设置该值。GAE:如何更新'缺少'字段?
我创建了一个REST调用并成功对它进行了单元测试。我也在本地开发环境中运行它,它工作。
@requires_auth
def get(self):
user = User.query(User.email == request.authorization.username).fetch(1)[0]
if user and user.email == Config.ADMIN_EMAIL_SHORT:
users = User.query()
records = []
for user in users:
user_records = Record.query(Record.user == user.key)
for rec in user_records:
if rec.timestamp == 0:
midnight_dt = set_time_to_midnight(rec.record_date)
rec.timestamp = create_timestamp(midnight_dt)
records.append(rec)
ndb.put_multi(records)
return 'Migration complete', 200
else:
return 'Sorry. You have no permission.', 403
然而,一旦我部署它,尽管成功的消息,并在日志文件中没有任何异常的错误,我仍然有旧的时间戳。然后我意识到了原因。
NoSQL的本质意味着那些领域甚至还没有那么明显。因此,我的条件if rec.timestamp == 0:
没有抓住他们。
如何在记录对象中搜索时间戳记字段?
呀,相关问题宣称没有解决方案。但您的解决方案效果很好。非常感谢。 :)你总是可以关闭一个问题,所以我相信。 – Houman
在没有有效的方法来做这件事的意义上,“没有解决方案”。唯一的方法(特别是当你有很多实体时)是让所有的实体从一个任务队列分页,直到你全部处理它们。想象一下,你有1000万个实体,只有一个实体失踪了,你仍然需要全部找到那个实体。 –