如何从服务器(node.js)检索MongoDB数据到我的AngularJS路由

这是我的Server.js文件(NodeJS):

 var express = require('express'); var server= require('http'); var path= require("path"); var bodyParser = require('body-parser'); var mongoose = require('mongoose'); var app= express(); var staticDIR = path.resolve(__dirname, "./www");`` app.use(express.static(staticDIR)); app.use(bodyParser.json()); app.get("*", function (req, res) { var indexViewPath = path.resolve(__dirname, "./www/index.html"); res.sendFile(indexViewPath); }); var dbURI = 'mongodb://localhost:27017/mydatabase'; mongoose.connect(dbURI); mongoose.connection.on('connected', function () { console.log('Mongoose connected to ' + dbURI); }); mongoose.connection.on('error',function (err) { console.log('Mongoose connection error: ' + err); }); mongoose.connection.on('disconnected', function () { console.log('Mongoose disconnected'); }); process.on('SIGINT', function() { mongoose.connection.close(function () { console.log('Mongoose disconnected through app termination'); process.exit(0); }); }); var userSchema = new mongoose.Schema({ name: String, password:String, email: {type: String, unique:true}, createdOn: { type: Date, default: Date.now } //modifiedOn: Date, //lastLogin: Date }); mongoose.model( 'User', userSchema ); var User = mongoose.model('User'); var CompanySchema = new mongoose.Schema({ CompanyName: String, password:String, email: {type: String, unique:true}, createdOn: { type: Date, default: Date.now } //modifiedOn: Date, //lastLogin: Date }); mongoose.model( 'company', userSchema ); var company = mongoose.model('company'); User.find({}, function(err, users) { if(!err){ console.log(users); } }); company.find({}, function(err, users) { if(!err){ console.log(users); } }); app.post('/account', function(req, res){ new company({ CompanyName:req.body.Company, email:req.body.email, password:req.body.password }).save(function(err,doc){ if(err)res.json(err); else res.send("succesfully inserted"); console.log(res); }); }); 

这是我的中间件来获取数据:

 app.get('/details', function (req, res) { console.log('I received a GET request'); company.find({}, function(err, users) { if(!err){ console.log(users); } else{ res.render('/details',{users:docs}) } }); }); app.listen(9000); console.log("Server Running on port 3000"); 

这是我的Controller.js(AngularJS)文件:

  angular.module('myApp', ['ngMaterial','firebase','ui.router']) .controller('detailsCtrl', function($scope,myfirebaseAddress,$location,$timeout) { var ref = new Firebase(myfirebaseAddress); }) 

这是我想要显示mongoDb保存的数据的路线

  <ui-view> <div class="sub-header"> <h3>Company Details</h3> </div> <ul> <li ng-repeat="users in user"> {{user.email}} </li> </ul> </ui-view> 

提前致谢

而不是写下面的代码

 if(!err){ console.log(users); } else{ res.render('/details',{users:docs}) } 

这样做

 if(!err){ res.send(users); } else{ res.send('could not retrived data'); } 

在控制器端你可以得到你所有的数据成功callback函数。这里也检查

 app.listen(9000); console.log("Server Running on port 3000"); 

这应该像下面。

 app.listen(9000); console.log("Server Running on port 9000"); 

控制器来获取请求的数据

 .controller('detailsCtrl', function($scope,$http) { $scope.users = []; $http.get('/details').then(function(d) { console.log(d); $scope.users= d.data; },function(err) { console.log(err); } ) }) 

服务器路由

 app.get('/details', function (req, res) { console.log('I received a GET request'); company.find({}, function(err, users) { if(!err){ res.json(users); } }); }); 

如果你想检索你的数据,你必须停止这个:

res.render( '/细节',{用户:文档})

如果你想用angular度应用程序来提供数据,你必须停下来渲染一个视图,并开始在你的响应中返回一个json。

 res.jsonp(users) 

然后你必须调整你的控制器。 写一个像这样的服务:

 angular.module('yourApp') .service('userService', function($http){ return { getUsers: function(url) { return $http.get(url) } } }) 

这应该返回一个http的承诺。 在你的控制器中,你可以这样处理这个承诺:

 $scope.users = function(){ userService.getUsers('/users') .then(function(users){ //You have your users object }) } 

记得要处理你的承诺的不可思议的情况

尝试使用angular度http模块来获取从客户端获取mongodb数据的节点/快速响应; 像这样: https : //github.com/J-Alex/api_rest_mvc