2012-04-21 147 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本身不是關係數據庫)。