2012-04-21 56 views
4

我正在尝试深入了解Dojo Toolkit的数据/商店概念。Dojo商店概念

据我所知,Dojo Store将取代Dojo Data API,所以我会尝试使用新的API。

有两个点,这让我怀疑我已经明白这个API背后的理念:

  • 道场只提供了内存中存储和JSON的REST商店。如果它基于IndexedDB API,为什么它不提供IndexedDB Store?

  • 我还没有找到存储用于存储不同数据类型的示例。在SQL数据库中,您可能有不同的表格,每个表格都有一个ID列。我将如何将此概念映射到Dojo商店:我应该使用不同的商店来代表Person and Company(作为示例)吗?或者我应该在同一家商店?是否有任何指导方针?

回答

2
  1. 阅读关于为什么不道场提供IndexedDB的店铺?

    好问题。我不知道。

  2. 我还没有找到存储用于存储不同数据类型的示例。我如何将这个概念映射到Dojo商店?

    Javascript是一种动态类型化语言,因此先验无法阻止您将多个数据类型存储在异构集合中。为了保持灵活性,Dojo商店API有意含糊其词 - 我把它看作是一套广泛的指导方针,然后将其视为一个硬API。

    如果你使用一个内存存储,你当然可以添加不同模式的对象给它,但没有任何东西阻止任何人做出更严格的对象存储,并且每个存储只接受一种对象,类似于SQL表。

    这就是说,我宁愿保持我的商店同质,为了避免混淆(我将有单独的商店人和公司)。请记住,您存储的对象可能包含分层数据(子对象),因此如果您有1-N关系,则可以使用单个存储来存储所有内容。

2

当使用一个店,我使用的所有对象

  • ID三个字段 - 一个ID,它是横跨在店里的所有项目唯一的。通常是类型和oid的组合。
  • _type - 标识实体“类型”的字符串值。即。人,公司。具有此值可以查询商店并获取所有人员或公司。
  • oid - 对象ID唯一标识同一类型的所有对象中的对象。即数据库ID

我发现我需要创建我自己的实现(扩展MemoryStore)Store API。你可以阅读更多关于它在这里:

http://swingingcode.blogspot.com/2012/03/dojo-implementing-viewmodelstore.html

我也谈到了用Java编写的引擎序列化的Java对象转换成可以由我的商店实现所使用的格式。您可以在

http://swingingcode.blogspot.com/2012/04/json-serialization-engine-part-i.html

http://swingingcode.blogspot.com/2012/04/json-serialization-engine-part-ii.html

0

http://dojotoolkit.org/reference-guide/1.8/dojo/store.html,只是说

道场/店旨在取代,整合,并改善道场/数据API和DojoX中/存储API具有操作简单,易于基于HTML5/W3C的IndexedDB对象存储API实现和扩展API。

+0

是的,但没有预期的dojo/store/IndexedDB!由于IndexedDB本身如此“惹人注目”,因此可能正在进行中而没有公布。 :) – dgm 2013-01-26 22:40:02

0

关于持久性存储后端:

道场/存储API仅仅是一个API,主要有提供“规范”,其他道场/ Dijit的成分应符合,那你可以用它来建立自己的商店。据我所知,没有计划在dojo内核中提供类似IndexedDB存储的东西。然而,有仓库,这正是这么做的:提供IndexedDB的存储和执行道场/存储API:

https://github.com/jensarps/storehouse

这是相同的许可证Dojo工具包中获取,并受版权保护道场基金会,所以使用许可方式是安全的(我是Dojo的贡献者,并且有文件中的CLA)。

关于一比二店:

每个道场/存储实例多于一个数据库中的表中的想;在这种情况下,我会为每种类型推荐一个商店,即“personStore”和“companyStore”,并处理代码内部的关系(IndexedDB本身不是关系数据库)。