我想獲得一個知道實體ID和祖先的實體密鑰。 ID在祖先定義的實體組內是唯一的。 在我看來,使用ndb接口是不可能的。就我所瞭解的數據存儲而言,這可能是由於此操作需要完整的索引掃描才能執行。 我使用的解決方法是在模型中創建一個計算屬性,該屬性將包含密鑰的id部分。我現在能夠做一個祖先查詢並拿到鑰匙ndb通過沒有父母的ID檢索實體密鑰
class SomeModel(ndb.Model):
ID = ndb.ComputedProperty(lambda self: self.key.id())
@classmethod
def id_to_key(cls, identifier, ancestor):
return cls.query(cls.ID == identifier,
ancestor = ancestor.key).get(keys_only = True)
看來工作,但都沒有對這個問題沒有更好的辦法?
更新 看來,對於數據存儲中的自然的解決方案是使用完整路徑,而不是標識符。起初我認爲這太繁重了。在閱讀dragonx答案後,我重新設計了我的應用程序。令我驚奇的是,現在一切看起來都更簡單了。額外的好處是,我的實體將使用更少的空間,我不需要額外的索引。
聽起來像是你答對了! –
在實體組中不唯一保證ID - 僅限於給定的父實體。 –