Route.get()需要回调函数,但在使用两个get请求后得到[object Undefined]

时间:2017-04-07 17:24:01

标签: node.js express

我正在学习节点,我在index.js中有两个get请求



var express = require('express');
var router = express.Router();


router.get('/', function(req, res, next) {
    res.status(200)
      .json({
        status: 'success',
        message: 'Welcome to EverestApi!'
      });
});



var db = require('./queries');

router.get('/api/users', db.getAllUsers);
router.get('/api/pref', db.getAllPref);


module.exports = router;




和我的query.js



var promise = require('bluebird');

var options ={
    promiseLib : promise
};

var pgp = require('pg-promise')(options);
var db = pgp({
    host: 'localhost',
    port: 5432,
    database: 'nari',
    user: 'postgres',
    password: 'pes'
});


function getAllUsers(req, res, next) {
  db.any('SELECT * FROM office.users')
    .then(function (data) {
      res.status(200)
        .json({
          status: 'success',
          data: data,
          message: 'Retrieved all users'
        });
    })
    .catch(function (err) {
      return next(err);
    });
}


function getAllPref(req, res, next){
  db.any('SELECT * FROM core.preferences')
    .then(function(data){
      res.status(200)
        .json({
          status: 'success',
          data : data,
          message : 'Retrieved all preferences'
        });
    })
        .catch(function(err){
          return next(err);
        });
    
}


module.exports ={getAllUsers: getAllUsers};
module.exports={getAllPref : getAllPref};




我在这里有两个GET Action.One getAllUsers()和另一个getAllPref()。启动服务器会出错。

  

d:\节点postgress-承诺\ node_modules \表达\ lib中\路由器\ route.js:202           抛出新错误(msg);           ^

错误:Route.get()需要回调函数但得到[对象未定义]     在Route。(匿名函数)[as get](D:\ node-postgress-promises \ node_modules \ express \ lib \ router \ route.js:202:15)     在Function.proto。(匿名函数)[as get](D:\ node-postgress-promises \ node_modules \ express \ lib \ router \ index.js:510:19)     在对象。 (d:\节点postgress-承诺\ API \ index.js:17:8)     在Module._compile(module.js:409:26)     at Object.Module._extensions..js(module.js:416:10)     在Module.load(module.js:343:32)     在Function.Module._load(module.js:300:12)     在Module.require(module.js:353:17)     at require(internal / module.js:12:17)     在对象。 (d:\节点postgress-承诺\ server.js:6:11)     在Module._compile(module.js:409:26)     at Object.Module._extensions..js(module.js:416:10)     在Module.load(module.js:343:32)     在Function.Module._load(module.js:300:12)     在Function.Module.runMain(module.js:441:10)     在启动时(node.js:139:18)

如果我评论上述路线之一,例如。 router.get(' / api / users',db.getAllUsers); 我得到了回复..请帮助。我知道这很天真,但我还在学习,对此很新。如果太天真,请原谅。谢谢你

1 个答案:

答案 0 :(得分:1)

在您的query.js

导出对象中的函数

SELECT  
    g.ENTITYID AS 'ENTITYID',
    g.ACCTNUM AS 'ACCTNUM',
    SUM(g.ACTIVITY) AS 'ACTIVITY',
    h.ACCTNAME AS 'ACCTNAME'
FROM 
    SQLDATA.DBO.GLSUM  g
INNER JOIN 
    SQLDATA.DBO.GACC h ON g.ACCTNUM = h.ACCTNUM
WHERE   
    g.ENTITYID = '85000'
    AND g.PERIOD < '201703'
    AND g.ACCTNUM = '569300000' 
GROUP BY  
    g.ENTITYID,
    g.ACCTNUM,
    h.ACCTNAME