如何从 mongodb 获取值到 angularjs 控制器

How can I get a value from mongodb to an angularjs controller

本文关键字:angularjs 控制器 获取 mongodb      更新时间:2023-09-26

我是Web开发的新手,从MEAN-Stack(Mongo,Express,Angular,Node(开始。

简而言之,我想将 mongo 中的值获取到我的角度控制器中,以便在如下所示的公式中使用来自 mongo 的多个值:

value11*value12 + value21*value22 ...etc

我的问题更详细:

  1. 我已经用字段集将一些数据写入 mongo:

网页代码段

<fieldset>
<rzslider rz-slider-model="value11"
          rz-slider-options="slider11.options"></rzslider>
<md-slider flex md-discrete ng-model="value12" step="1" min="1 max="100 aria-label="rating"></md-slider
</fieldset>

控制器.js代码段。rz滑块来自那里 https://github.com/angular-slider/angularjs-slider
来自 Angular-Material 的 md 滑块

$scope.slider11 = { 
  options: { 
    showTicks: true,
    hidePointerLabels: true,
    hideLimitLabels: true,
    stepsArray: [
      { value: 1, legend: 'Very poor' }
      { value: 2, legend: 'Poor' },
      { value: 3, legend: 'Fair' },
      { value: 4, legend: 'Good' }, 
      { value: 5, legend: 'Very Good' }
    ] 
  }
};
$scope.value12 = 40;
//Create new Article object
var article = new Articles
  value11: this.value11,
  value12: this.value12,

此时一切正常,在 mongo 中存储了设置的值。

  1. 在第二步中,我想从数据库中获取值放入不同的控制器中,以将它们包含在上述内容中公式。 到目前为止唯一有效的是回忆诸如这直接在 HTML 视图中:

网页代码段

{{article.value11 * article.value12}}

我所知,这要归功于下面的查询。

控制器代码段

// Find a list of Articles
$scope.find = function () {
$scope.articles = Articles.query();
};

但最终我想回忆一下数据库值,并将它们定义为控制器中的新$scope。

所以整个MEAN堆栈背后的想法以及或多或少整个前端/后端的想法是,你的角度应用程序是前端,你需要对你的Node.js服务进行AJAX调用以连接到MongoDB

可以这样想 Angular <---AJAX---> Node <------> Mongo

所以你需要做的第一件事是构建一个休息服务(使用快速框架的帮助(,这样这样的事情就可以了

app.get('/getMongoData', function(req, res, next) {
     //code to get mongo data with Mongoose
     req.json(DataFromMongo); //returns the data in json format
}); 

在这里,您将使用后端代码使用 Mongoose 包从 Mongo 数据库中获取数据,并使用 Express 的一部分req.json()调用将其返回

现在这一切都可以正常工作,您可以使用类似的东西从 Angular 控制器调用数据

$http.get('/getMongoData').then(function(response) {
      $scope.myMongoData = response.data;       
});

注意:不要忘记在控制器的注入中添加$http app.controller('MyController', ['$scope', '$http', function ($scope, $http) { // code }]);