【问题标题】:Getting started with Node.js, angular.js and MongoDB, modeling relations and other ramp up tips [closed]Node.js、angular.js 和 MongoDB 入门、建模关系和其他提升技巧 [关闭]
【发布时间】:2012-11-22 18:14:37
【问题描述】:

我来自 Java 和关系世界,并试图让我的脚湿透。我正在开发的应用程序是一个约会调度系统,在后端使用 node.js 和 MOngo,客户端在 angular.js 中。

我正在尝试理解几个可能是我对 Java 偏见的残余的关键概念。任何有关指向相关 sn-ps 的帮助,教程表示赞赏。

1) 我将如何管理 Mongo/Node 中的预约、客户和服务代表之间的关系?是否创建了约会对象并在约会中存储了用户 ID 的引用?用户是否需要参考约会列表?

2) 用户 authn/authz,因为 node 被用作 restful 服务提供者,我如何创建基于角色的控制?例如,当用户注册为服务代表时,他应该被批准。有什么模块可以帮忙吗?

3) 任何提供用户注册等报告的通用模块?

4) 人们如何管理客户端 MVC 上的权限?

非常感谢任何指针。

【问题讨论】:

  • 您选择 MongoDB 有什么特别的原因吗?
  • 没什么特别的,只是有很多关于 node mongo 的在线教程。您会推荐不同的设置吗?

标签: node.js mongodb express angularjs


【解决方案1】:

开发同时拥有服务器端组件和客户端组件的应用程序会使事情变得比只有服务器端框架更复杂。

  • 当使用像 AngularJS 这样的客户端框架时,所有模板都是在客户端编译的,而不是在服务器端编译的。这与传统的服务器端渲染有很大的不同。这意味着,您将发送 JSON,而不是将呈现的 HTML 发送到客户端。您的服务器本质上将成为一个带有安全位置的 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、身份验证支持,因此您可以使用构建在传统 http 服务器之上的 connect 或使用构建在 connect 和节点提供的普通 http 服务器上的 ExpressJS。 ExpressJS 非常容易上手,并且可以很好地与 RESTful 后端配合使用。

这很简单。如果你使用 AMD、CommonJS、Browserify 等,获取 ExpressJS,创建一个新应用程序,设置所有客户端的东西(angularJS)和模块系统......

【讨论】:

  • 难道没有办法在 node.js 和 Angular 之间共享模型吗?我认为这对 node.js 来说是一个很大的吸引力,因为它是 javascript。
  • @SamBarnum 我不知道。我目前正在研究构建在 Ember.js 和 Express 之上的 node.js/browser (Tower) 框架。 (版本 0.5.0 - 当前版本非常不同)。我们正在探索在混音中添加角度的可能性。
【解决方案2】:

我不熟悉 node.js,但是对于 mongodb 设计,您必须在“子文档”与“链接文档”之间进行选择。

1

你可以看看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} ]
}

尽管信息可能重复,但对于查询,您只需点击一个文档/子文档。

4

即使它可能是客户端,也不意味着服务器不应该验证。客户端可以尽可能地验证,但服务器仍然应该验证。抱歉,我没有更多要添加的内容了。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-05-02
    • 2010-10-26
    • 2010-10-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多