我在记录中引入了一个名为timestamp的新字段。现在我想查看所有旧记录并设置该值。
我创建了一个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:
没有抓住它们。
如果记录对象中有时间戳字段,我如何在记录对象中搜索?
答案 0 :(得分:0)
我投票结束了,但我意识到你的问题不是很重复。
不存在不存在的字段,因此您无法基于该字段进行查询,但是一旦您实际获得了该实体,您可以检查该字段是否缺失:
if rec.timestamp == None: