AngularJS:我需要知道要实现的数据库结构吗?

时间:2013-06-02 14:14:07

标签: database database-design angularjs angularjs-directive

我是AngularJS的初学者用户。我一直在尝试拉硬编码的JSON(后端和服务器数据尚未就绪)。似乎为了提取数据,例如在使用非常常见的ng-repeat时,我需要知道数据库结构(因为渲染的JSON将镜像该结构,对吧?)。

因此,虽然我可以独立于后端进行编码,但我是否认为我必须知道数据库结构?例如......我可能想要提取用户评论数据。这可以在它自己的数据库中,我可以这样做:ng-repeat ='评论中的评论'并过滤数据库中每个评论条目中的特定用户。如果评论仅在用户表中,那么它将是ng-repeat ='用户[0] .comments中的评论。我认为前者是正确的方法但我老实说从来没有学过正确的数据库结构。看来,为了正确实现AngularJS,你必须知道它。

感谢任何帮助。我真的想确保我正确处理事情。谢谢!

1 个答案:

答案 0 :(得分:2)

我认为您不需要(或应该)知道数据库结构。 AngularJS是一个MVC框架。该架构的基本原则是关注点分离。简单的说法:不要混合东西,但更具体地说,你在谈论两个系统之间的通信:一个本地的(运行angularJS的浏览器)和远程的一个(一个服务器可能,也可能不是,相同,将角度文件提供给客户端)

例如,您的视图不应该访问您的数据库(如果您正在使用PHP,那么您不应该在视图中使用mysql_query(...))。

您还应该设计松散耦合的组件:使它们尽可能独立。单元测试可以帮助您思考这种方式,AngularJS特别适用于业力单元测试。遵循这个原则,如果您使用twitter API在angularJS应用程序中显示推文怎么办?你不需要知道twitter的内部。有一个API以您可以使用的格式提供此JSON。 您的后端应提供此功能(例如,使用外观控制器),您应该同意后端团队可用的数据。

不要让您的设计依赖于数据库结构,而是让后端API依赖于您的要求。通过这种方式,您将拥有两个松散耦合的系统,后端团队可以随心所欲地执行任何操作而不会影响您。例如,更改DBMS或表的结构。

如果您想提取评论,可能会有远程通话($httpng-resource),可以获取特定用户(或少数用户)的所有评论,因为您可能希望在服务或控制器中最小化远程调用的数量。服务器响应一个表示这个的json文件(可能还有一些很快就需要的东西,比如个人资料图片网址,用户ID等)。然后,在$scope中将要显示的数据放入视图(从服务器获取的内容的子集)。