我正在使用appengine创建一个系统,但无法找到在数据存储区中实现此功能的正确方法。我可以在一个普通的关系数据库中这样做,但是我无法理解这一点。
在数据存储区是一个实体,该实体每天都有“关闭”和“开放”时间。
到目前为止这很容易但是:偶尔在一天内可能有2 +“开”和“关”时间。
有人能就正确的实施提出一些建议吗?
答案 0 :(得分:2)
由于您没有指定您是使用Java,Python还是Go,我会给您一个Python示例,但一般概念可以在任何一个中实现。
Python具有NDB API(比DB API更新),其中包含“重复”属性标记:https://developers.google.com/appengine/docs/python/ndb/properties#repeated
当你重复一个属性时,“该属性会获取基础类型的值列表,而不是单个值。”,这样就可以指定多个打开和关闭时间。
当您检索特定日期的信息时,您可以循环浏览列表以查看您处理此信息的时间是否介于其中一个打开/关闭窗口之间。如果找到一个打开/关闭,则打破循环并处理请求。
我强烈建议的一件事是跟踪开/关对并消除任何重叠与验证。这将使您的处理更容易。
答案 1 :(得分:1)
您可以创建一个模型来保存每对开关日期,并将其命名为WorkingPeriod
。然后,在您的主实体中,您可以拥有嵌入的WorkingPeriod
值列表或指向Key
实体的WorkingPeriod
列表。这取决于哪种方法最适合您的需求。
希望这有帮助!