2013-12-08 78 views
0

我希望有get_multi返回None用於無效ID的密鑰。有沒有辦法通過get_multi忽略無效密鑰?

class Entity(ndb.Model): 
    pass 

ids = [0, 1] 
rows = ndb.get_multi([Key(Entity, id) for id in ids]) 

實際結果

BadRequestError('missing key id/name')

期望的結果

[None, <Entity with id 1>]

我不是呼籲idsfilter的原因是,我想在ids指數對應於指數在rows

+0

如果密鑰無效且不丟失,您將只會收到一個badrequest錯誤。你如何確保索引匹配,除非你分配ids –

+0

如果他們缺少('None'),我得到一個空指針,這仍然是一個問題。當使用'get_multi'和有效的鍵時,它們總是匹配。 –

+0

如果你沒有得到None,你不能分辨哪些鍵沒有返回值。 –

回答

1

由於get_multi只是一個輔助函數,目前爲止我的最佳解決方案是複製代碼並僅在id > 0時運行查詢。

ids = [0, 1] 
futures = [Key(Entity, id).get_async() if id > 0 else None for id in ids] 
rows = [future.get_result() if future else None for future in futures] 
相關問題