0

我在我的记录中引入了一个名为时间戳的新字段。现在我想浏览所有旧记录并设置该值。

我创建了一个 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:没有抓住他们。

如果它有时间戳字段,我如何在记录对象中搜索?

4

1 回答 1

0

我投票结束,但后来我意识到你的问题并不完全重复。

不存在的字段不存在,因此您无法根据该字段进行查询,但是一旦您实际获得了实体,您可以检查该字段是否丢失:

if rec.timestamp == None:
于 2013-10-30T23:23:35.770 回答