AngularJS如何︰ 将 node.js mongodb 结果传递给 angularjs 吗?

发布时间: 2017/4/16 21:28:44
注意事项: 本文中文内容可能为机器翻译,如要查看英文原文请点击上面连接.

质疑,使用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);

我到底做错了?

解决方法 1:

您将需要使用某种形式的 Web 服务器创建一个 API,当某些资源在收到请求时,将返回此数据。您可以要求您的 API 使用 $http 服务于您角的应用程序。最受欢迎的选择一个节点 web 框架是表达,这包装节点核心HTTP 模块,并给出了一种鲁棒的API

其他流行的 Node.js Web 框架

这些都是几个 Node.js Web 框架,我也不是基于 MVC 框架如流星Sails.js ,因为角已经提供了那块任何框架。

若要启动并运行快速快递,你可以使用快递发电机用支架支撑起了一个基本的快递 API。然后你 Node.js 服务器中只添加路由的您的函数。

findIco

var findIco = function(db, callback) { 
  db.collection('footIco').find().toArray(function(err, docs) {
    if (err) return callback(err, null);

    return callback(null, docs);
  }); 
} 

Node.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
    });
});
赞助商