在節點上使用Express.js和Mongoose構建REST API - 我在模型或路由器上偶然發現了代碼設計問題 - 我應該在哪裏處理關係?Express.js和Mongoose模型關係 - 在模型或路由器中?
首先,我對MVC很新穎,即使express.js不是完整的MVC,我也想遵循最佳設計實踐。
問題很簡單 - 應用程序有用戶,每個用戶可以有多個文檔(項目,訂單等)。顯然,我必須至少存儲每個創建文檔的用戶標識。問題是 - 我應該在哪裏做?
我可以從每個路由器中的會話中獲取用戶標識並將其附加到文檔,或者我可以將當前用戶標識設置爲全局變量,例如app.currentUserID並在我的模型中使用該標識附加該文件的ID。
實際上有更多有趣的情況,用戶可以擁有多個組織,並且我必須爲用戶在與特定組織一起操作時創建的每個文檔設置組織標識。
所以問題是:我應該在我的路由器中處理這種邏輯(express沒有'controllers'這樣的)還是model?
謝謝,這是有道理的。我還研究了Yii PHP框架的源代碼,它似乎也處理模型中的這類事情,儘管我認爲它會在控制器中實現。 – ragulka
對任何可能閱讀此內容的人來說,只是一個警告詞:只有當您有權訪問'req'對象時,纔可以在模型中設置當前用戶ID。因爲Mongoose沒有辦法將'req'對象從控制器/路由傳遞給模型構造函數,所以我必須處理控制器中的管理關係。所有這些都是由於節點的異步性質 - 你不能簡單地設置一個像'app.currentUser'這樣的全局變量,因爲它將爲所有網站用戶設置。 – ragulka