我试图使用node.js在mongodb中获取数据,但我无法获得结果

时间:2016-02-15 06:09:28

标签: angularjs node.js mongodb

我已经编写了从mongodb获取数据的查询,但我无法获得结果。 我的node.js文件如下所示

的node.js

router.get('/manage-product', function(req, res){
    console.log('I received get request');

    var findProducts = function(db, callback) {
       var cursor =db.collection('proInfo').find(  ObjectId("56bc959942559b3847249b7e"));
       cursor.each(function(err, doc) {
          assert.equal(err, null);
          if (doc != null) {
             console.dir(doc);
          } else {
             callback();
          }
       });
    };

    MongoClient.connect(url, function(err, db) {
      assert.equal(null, err);
      findProducts(db, function() {
          db.close();
      });
    });
    return res.json({
        findProducts,
    });
});

从这个节点我不能将findProducts返回给我的控制器。在萤火虫响应部分,我只是这样{}。但是我在命令提示符下获取了值。

controller.js

(function ()
  {
  'use strict';

angular
    .module('app.manage-product')
    .controller('ManageProductController', ManageProductController);

/** @ngInject */
ManageProductController.$inject = ['$http', '$scope'];
function ManageProductController($http, $scope)
{
     var vm = this;

     $http({
            url: 'http://localhost:7200/api/manage-product',
            method: 'GET',
            //data: ''
        }).success(function(res) {
            console.log('success');
            //$scope.productlist = res;
            //vm.findProducts=res;
            vm.findProducts=res.findProducts;
        }, function(error) {
            console.log(error);
            alert('here');
        });

    console.log('i ma here');

}
})();

3 个答案:

答案 0 :(得分:0)

return res.json({
        findProducts,
    });

删除它并在node.js代码中更新它 if (doc != null) { console.dir(doc); res.send(JSON.stringify(doc)); db.close(); } else { callback(); }

答案 1 :(得分:0)

使用以下代码并尝试

  router.get('/manage-product', function(req, res){
console.log('I received get request');

var findProducts = function(db, callback) {
   var cursor =db.collection('proInfo').find(  ObjectId("56bc959942559b3847249b7e")).toArray(function(err, docs){
      if(err){
        return callback(new Error("Some problem"));
       }else{
       return callback(null,docs);
    } 
     });

};

MongoClient.connect(url, function(err, db) {
  assert.equal(null, err);
    findProducts(db, function(err,docs) {
      db.close();
      if(err) return res.json({result:null})
    else
   return res.json({result: docs  });
  });
});

});

答案 2 :(得分:0)

在findProducts函数中尝试以下代码

     if (doc != null) {
           console.dir(doc);
           return doc;
     }

你的最终回报应该如下

return res.json(findProducts);