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

Posted

技术标签:

【中文标题】在 AngularJS 中使用数据库 - 我应该在哪里编写数据库连接代码?【英文标题】:Using database in AngularJS - where should I write DB connection code? 【发布时间】:2013-11-14 12:14:54 【问题描述】:

我现在正在使用 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>

我想从数据库中获取list 中的数据并使用它。所以这里是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
        );
    );

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

谢谢。

【问题讨论】:

我回答了你的第一个问题,但第二个问题我不明白你需要打开什么文件。 谢谢。我在saving to a file 中的意思如下:1)从数据库中获取数据并将其结果保存到文件中。 2) 在searchController.js 中加载保存的文件,并将其内容映射到$scope.list 变量的值。 3) 最后,从search.ejs 文件中访问变量。 【参考方案1】:

我认为最好的做法是有一个可以从中获取列表的 http 路由。假设它是一个文章列表,那么你:

    在您的 Web 服务器中有一个路由,您可以通过该路由:GET /articles(您可以使用 mongodb 驱动程序 collectionfind 函数轻松实现它) 在您的角度控制器上:

(客户端代码)

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" 添加到依赖项数组中)

【讨论】:

谢谢。现在一切正常。自从我的原始帖子以来已经过去了两个多星期,此后没有一个答案,我已经接近放弃它了。绝对想投票超过 1... 非常感谢。

以上是关于在 AngularJS 中使用数据库 - 我应该在哪里编写数据库连接代码?的主要内容,如果未能解决你的问题,请参考以下文章

为啥我应该在 AngularJS 中选择使用服务而不是工厂? [复制]

我应该如何在 AngularJS 中制作可配置模块

在 AngularJS 中的 JSON 中添加、删除和更新特定数据

使用angularjs在html中的表格数据单元格上显示下拉列表

使用laravel作为后端API和AngularJS作为前端的实时通知

如何在 AngularJS 中的两个模块之间共享数据?