在AngularJS中使用数据库 – 我应该在哪里写DB连接代码?

我现在正在使用Node.js,AngularJS和MySQL或MongoDB构build一个Web应用程序。 但是,当我试图使用包含从数据库中提取的数据集的控制器使用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' } ] } 

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

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

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

最后,我还希望听到您是否应该首先将数据库中的数据保存到任何文件中,然后通过打开和closures文件来使用它,或者在请求获取数据时,我应该直接连接到数据库,性能和安全问题(数据库中的数据每天都会更新,所以我必须运行一个脚本来自动重新创build服务文件)。

谢谢。

我相信最好的做法是有一个http路由,你可以从列表中。 假设这是一个文章列表,那么你:

  1. 在您的Web服务器中有一个path,您可以: GET /articles (您可以使用mongodb驱动程序collectionfindfunction轻松实现它)
  2. 在你的angular度控制器上:

(客户端代码)

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

至于你的第二个问题,你可以从服务器呈现列表,但是如果你想更新列表,你将需要使用$http无论如何。 此外,请注意,angular模板使用{{}} ,所以如果你不小心,你可能会覆盖它们,这就是为什么我认为这不是一个好的做法。 但是,如果你想从Web服务器注入一些configuration,那么你可以注入类似于这个的代码(作为脚本):

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

然后你可以注入'myConfiguration'到你所有的控制器(不要忘记把"myModule.configuration"添加到依赖数组中)