2013-03-02 103 views
2

我有以下問題:Node.js的REST接口骨幹集合

我有一個account集合在我的服務器端(貓鼬),我用快遞資源的REST API。

現在我有幾個其他的對象(項目,組織,任務)包含成員列表(ObjectIds的數組),它們是account集合的所有子集。

MarionetteJS應用程序正在處理我的客戶端收藏。

我正在尋找一種避免調用API的方法。目標是通過調用api獲取集合。

的一些想法,我有:

  • 將資源添加到每個對象像

    /api/organization/:organizationId/members/ 
    /api/organization/:organizationId/project/:projectId/members/ 
    
  • 添加參數的基礎資源一樣

    /api/accounts/?ids=id 
    
  • 抓取最大的集的帳戶可能(來自組織)並獲得其他子集從這個集合(客戶端)。

  • 填充在成員列表成員在服務器端

  • 單一賬戶加載。迭代通過成員列表並獲取每個成員。

是否有一種最佳實踐?我知道第一個選擇也許是最好的,但也許有一個選項我錯過了。

回答

0

這一切都取決於你如何構建你的Mongoose數據庫。如果成員列表包含在組織,項目或任務文檔中,則對文檔的查詢將爲您提供所需的列表,而無需查找您感興趣的特定字段。

如果您編碼列表作爲一個不同的文檔(這聽起來像一個SQL實踐),你需要在Node上設置一個新的資源來獲取成員列表。在這種情況下,您的第一個選項在URL結構方面聽起來不錯,但實現(在服務器端或客戶端加載)取決於項目的特性。通過使用節點我猜你想要一個小型服務器和一個沉重的客戶端(通常情況下),所以你最終會在客戶端上做到這一點。

至於良好的做法,MongoDB是一個面向文檔的數據庫。爲了充分利用它,請不要考慮實體和關係,並考慮他們將要提供的文檔。數據複製在很多地方非常普遍。每個集合都是一種文檔,因此客戶每次需要某些數據時都會顯示它,以獲取包含所需信息的文檔。

在網上尋找MongoDB模式,有很多好的來源。如果你喜歡一本書,可以看看Chodorow的權威指南或谷輪的應用設計模式。