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萬個實體,只有一個實體失蹤了,你仍然需要全部找到那個實體。 –