如何:将node.js mongodb结果传递给angularjs
How To: Pass node.js mongodb result to angularjs?
所以我有一个使用Node.js查询的MongoDB。
使用此功能未发送数据,我不知道出了什么问题
var findIco = function(db, callback) {
var cursor =db.collection('footIco').find();
cursor.each(function(err, doc) {
// console.log(err);
if (doc != null) {
console.log(doc); <------ DISPLAY THE DATA IN THE CONSOLE
} else {
callback();
}
});
};
app.get('/icons', function(req, res){
//calling the function
MongoClient.connect(url, function(err, db) {
if(err) {
console.log(err);
return res.status(500).send(err);
}
findIco(db, function(icons) {
res.header("Access-Control-Allow-Origin", "*");
res.header('Access-Control-Allow-Methods', 'GET,PUT,POST,DELETE');
res.header("Access-Control-Allow-Headers", "X-Requested-With, Content-Type");
console.log(icons);<--------------- IS UNDEFINED
res.json(icons);
db.close();
return;
});
});
});
app.listen(8080);
我做错了什么?
您需要使用某种形式的 Web 服务器来创建 API,该 API 将在某个资源收到请求时返回此数据。您可以使用 Angular 应用程序中的$http
服务向 API 发出请求。Node Web框架最流行的选择是Express,它包装了Node Core HTTP模块并提供了一个健壮的API。
其他流行的节点.js Web框架
- 科阿
- 快乐.js
这些只是几个 Node.js Web 框架,我也排除了任何基于 MVC 的框架,如 Meteor 和 Sails.js因为 Angular 已经提供了这一部分。
要在 Express 中快速启动和运行,您可以使用 express-generator 来搭建基本的 Express API 的基架。然后只需在 Node.js 服务器中为您的函数添加一个路由。
查找科
var findIco = function(db, callback) {
db.collection('footIco').find().toArray(function(err, docs) {
if (err) return callback(err, null);
return callback(null, docs);
});
}
节点.js API
app.get('/icons', function getIcons(req, res){
//calling the function
MongoClient.connect(url, function(err, db) {
if(err) {
console.log(err);
return res.status(500).json(err);
}
findIco(db, function(err, icons) {
if (err)
res.status(500).json(err);
else {
if (!icons)
res.status(204).send();
else
res.json(icons);
}
db.close();
return;
});
});
});
角度$http
呼叫footIconCtrl
app.controller('footIconCtrl', ['$scope', '$http', function($scope, $http){
$scope.icons = [];
$http({
method: 'GET',
url: 'http://<serverAddress>:<serverPort>/icons'
})
.then(function(icons) {
$scope.icons = icons.data;
})
.catch(function(errRes) {
// Handle errRess
});
});
在你的角度代码中,你将有一个像getDocument.controller.js
这样的文件,其中包含一个函数,其中包含对服务的 http 调用。像这样:
var getDocs = function(){
var apis = http://localhost:9000/api/getDocs;
httpRequest.get(apis).
then(function(docs){
// Your code to handle the response
});
};
现在,在服务器端代码中,您可以将响应发送为
CollectionName.find({}, function (err, docs) {
if (err) return next(err);
if (!docs) return res.send(401);
res.json(docs);
});
相关文章:
- AngularJS/HTML/Bootstrap元素用于动态搜索结果
- 在输入中存储AngularJS表达式结果
- AngularJS:如何获取$http结果作为函数的返回值
- 如何使用 angularjs 以表格格式显示 parse.com 的查询结果
- 在angularjs工厂中,如何在函数解析后返回结果
- 使用angularjs工厂的奇怪结果
- 如何循环使用JSON(使用AngularJS)并将结果放入Javascript数组中
- 如何在AngularJS中根据子结果集排序结果
- 重新排序angularjs ngRepeat与后续数据结果
- 使用AngularJS从服务器获取计算结果
- 如何访问AngularJS promise链中上一个promise的结果
- 如果ng-if的计算结果为false,AngularJS会使我的模型数据无效
- 如何根据AngularJS中的http结果生成不同的html内容
- AngularJs的空结果
- 在 AngularJS 1.5.0 中获取空返回结果为 $http.get()
- AngularJS 引导模态结果而不关闭
- 在函数外部的 Angularjs 中访问 $http.get 的结果
- AngularJS :从$http获取缓存结果
- 等到$http完成,以便在AngularJS中输出结果
- 如何:将node.js mongodb结果传递给angularjs