2012-12-05 62 views
11

我來自Java和關係世界,試圖讓我的腳溼潤。我正在使用的應用程序是一個約會調度系統,在後端使用node.js和MOngo,客戶端使用angular.js。Node.js,angular.js和MongoDB入門,建模關係和其他漸強技巧

我想了解幾個可能是我的Java偏見殘餘的關鍵概念。任何幫助指向相關的片段,教程是讚賞。

1)我如何管理Mongo/Node中的預約,客戶和服務代表之間的關係?預約對象是否已創建並存儲在約會中的用戶標識的引用?用戶是否需要參考預約列表?

2)用戶authn/authz,因爲節點被用作平靜的服務提供者我該如何創建基於角色的控制?例如,當用戶註冊爲服務代表時,他應該被批准。有沒有可以幫助的模塊?

3)任何通用模塊,它給用戶註冊等報告?

4)人們如何管理客戶端MVC的權限?

任何指針,非常感謝。

+1

是否有你選擇MongoDB的具體原因? – Chad

+0

沒有具體的東西,只是很多在線節點mongo的教程。你會推薦一個不同的設置? – retrobrain

回答

3

我不熟悉node.js,但對於mongodb設計,您必須在「子文檔」和「鏈接文檔」之間進行選擇。

你可以看看how to structure many-to-many relationships in mongoose?

想法是檢索一個完整的文檔,它是有意義的。例如,您可能有以下模式。

{ customer : { name: xxx }, 
    appointments: [ {date: xx, type : xxx .., servicerep: xxx}, {date: xx, type : xxx .., servicerep: xxx} ] 
} 

即使信息可能重複查詢,您只能擊中一個文檔/子文檔。

即使它可能是客戶端,但這並不意味着服務器不應該驗證。客戶可以儘可能地驗證,但服務器仍然應該驗證。對不起,我再也沒有補充。

14

在有服務器端組件和客戶端組件的情況下執行應用程序會讓事情變得複雜一些,然後只是有一個服務器端框架。

  • 當使用像AngularJS這樣的客戶端框架時,所有的模板都是編譯客戶端而不是服務器端的。這與傳統的服務器端渲染有很大的不同。這意味着,不是將呈現的HTML發送給客戶端,而是發送JSON。您的服務器本質上將成爲一個安全安裝的RESTful API。

  • 我對AngularJS並不是非常熟悉,對於Ember來說更多,但您基本上可以創建一個寧靜的服務:https://gist.github.com/2432692。這將與RESTful界面上的服務器通信。

  • 在服務器上,使用nodejs,您可以使用像Mongoose之類的ORM。您可以創建關係,文檔等...需要注意的是,您必須在服務器和客戶端上覆制模型。

  • MongoDB使用bson,一個序列化的JSON字符串/對象的二進制編碼。由於nodejs是使用V8 JavaScript引擎構建的,因此JSON是一種自然對象類型,因此使用MongoDB非常簡單。

  • NodeJS上的HTTP服務器:NodeJS爲http服務器提供基本實現。它並不多,但您可以響應並處理請求。沒有會話,cookie,auth支持,所以你可以使用connect,它建立在傳統的http服務器之上,或者使用ExpressJS,它建立在connect和該節點提供的正常http服務器上。 ExpressJS非常易於入門,並且可以與RESTful後端良好協作。

這很簡單。獲取ExpressJS,創建一個新的應用程序,設置所有客戶端的東西(angularJS)和模塊系統,如果你使用AMD,CommonJS,Browserify等......

+0

沒有辦法在node.js和angular之間共享模型嗎?我認爲這對node.js來說是一個很大的吸引力,因爲它是javascript。 –

+0

@SamBarnum不是我所知道的。我目前正在研究構建在Ember.js和Express之上的node.js/browser(Tower)框架。 (版本0.5.0 - 當前版本非常不同)。作爲一種選擇,我們正在探索添加角度的可能性。 – Daniel