2013-11-03 20 views
14

我现在正在使用Node.js,AngularJS以及MySQL或MongoDB构建一个Web应用程序。然而,当我试图使用AngularJS与包含从数据库获取的数据集的控制器时,我不知道应该在哪里写代码...在AngularJS中使用数据库 - 我应该在哪里编写数据库连接代码?

我现在正在写下面的代码(search.ejs,不包括全部分(如html标签)):

<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.0.8/angular.min.js"></script> 
<script src="/javascripts/searchController.js"></script> 
<div ng-app class="row" ng-controller="searchCtrl"> 
<input ng-model="query"> 
<ul class="search"> 
<li ng-repeat="i in list" | filter:query"> 
<a href="{{i.url}}">{{i.name}}</a> 
</li> 
</ul> 
</div> 

我想数据list从数据库中获取并使用它。因此,这里的searchController.js文件:

function searchCtrl($scope){ 
    $scope.list = [ 
     { 
      'name': 'Michael', 
      'url': 'mic' 
     }, 
     { 

      'name': 'Bob', 
      'url': 'bob' 
     } 
    ] 
} 

不过,我想要做的是,而不是在MySQL或MongoDB中的数据库中手动写出在$scope.list可变数据,使用数据。 (MySQL是我的首选语言,但是我认为MongoDB在这种情况下似乎更好。)那么,我怎样才能连接到DB?

我也有一个文件名为search.js,这是下列之一:


exports.index = function(req, res) { 
    res.render("search", { 
    }, function(err, res){ 
     res.render("index", { 
      content: res 
     }); 
    }); 
} 

最后,我也想听听您的意见是否我首先应该从数据库将数据保存到任何文件,并使用它打开和关闭文件,或者我应该直接连接到数据库,无论是性能还是安全问题(数据库中的数据每天都会更新,所以我必须运行脚本以自动重新创建无论如何都是送达的文件)。

谢谢。

+0

我回答了你的第一个问题,但对于第二个问题,我不明白你需要打开什么文件。 –

+0

谢谢。 “保存到文件”的含义如下:1)从数据库中获取数据并将结果保存到文件中。 2)将保存的文件加载到'searchController.js'中,并将其内容映射到'$ scope.list'变量的值。3)最后,从'search.ejs'文件中访问变量。 – Blaszard

回答

19

我相信最好的做法是有一个http路由,你可以从列表中。让我们假设它的文章的列表,然后你:

  1. 在你的Web服务器的路由从中,你可以:在你的角度GET /articles(你可以很容易地使用MongoDB的驱动collection & find功能实现它)
  2. 控制器:

(客户代码)

function searchCtrl($scope, $http){ 
    $http.get("/articles").success(function(articles, status, headers, config) { 
      $scope.articles = articles 
    } 
} 

作为哟你的第二个问题,你可以从服务器渲染列表,但如果你想更新列表,无论如何你都需要使用$http。此外,请注意角模板使用{{}},所以如果您不小心,您可能会覆盖它们 - 这就是为什么我认为这不是一个好习惯。 但是,如果你有你想从你的Web服务器注入一些配置,那么你可以注入一个类似的代码(如脚本):

angular.module("myModule.configuration", []).constant('myConfiguration', {siteName:"http://www.my-site.com"); 

,然后你可以注入“myConfiguration”所有你的控制器(不要忘记将"myModule.configuration"添加到依赖关系阵列)

+0

谢谢。现在一切正常。自从我原来的职位以来已经过去了两个多星期,之后没有任何单一的答案,我已经接近放弃了。肯定想要upvote超过1 ...非常感谢。 – Blaszard

相关问题