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

我正在使用Node.js,AngularJS和MySQL或MongoDB构建一个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>

我想从数据库中获取数据并使用它.所以这里是searchController.js文件:

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

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

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

我也有一个名为search.js的文件,它是以下一个:


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

最后,我还想听听你是否应该首先将数据从数据库保存到任何文件,并通过打开和关闭该文件来使用它,或者我应该直接连接到数据库,只要请求来获取数据,就性能而言和安全问题(数据库中的数据将每天更新,因此我必须运行一个脚本来自动重新创建服务文件).

谢谢.

最佳答案
我相信最好的做法是拥有一个可以从中获取列表的http路由.我们假设它是一个文章的列表,然后你:

>在您的Web服务器中有一条路线,您可以从中获取:GET /文章(您可以使用mongodb驱动程序集合和查找功能轻松实现)
>您的角度控制器:

(客户端代码)

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”添加到依赖关系数组)

转载注明原文:javascript – 在AngularJS中使用数据库 – 我应该在哪里编写数据库连接代码? - 代码日志