无法识别Express REST API响应方法

时间:2016-06-01 19:34:38

标签: json node.js api rest express

我有这个非常简单的get请求,它返回我想要实现的json。我已经按照Express Web Framework REST API的教程进行了操作,但由于某种原因,我不断收到相同的错误

ERROR:

TypeError: res.status is not a function

TypeError: res.json is not a function

index.js:

 var express = require('express');
    var router = express.Router();
    var pg = require('pg');
    var connectionString = 'pg://postgres:postgres@postgres/feed';

/* GET home page. */
router.get('/', function(req, res, next) {
  res.render('index', { title: 'Express' });

});

router.get('/api/leaderboard', function(resp, req){
  var results = [];
   pg.connect(connectionString, function(err, client, done){
       if(err){
         done();
         console.log(err);
         return res.status(500).json({ success: false, data: err});
       }
       var query = client.query("SELECT * FROM log WHERE (logged >= date_trunc('week', CURRENT_TIMESTAMP - interval '1 week') AND logged <= date_trunc('week', CURRENT_TIMESTAMP));");
       var counter = 0;
       var b1 = {};
       var b2 = {};
       var b3 = {};
       var b4 = {};
       b1.energy_sum_week = 0;
       b2.energy_sum_week = 0;
       b3.energy_sum_week = 0;
       b4.energy_sum_week = 0;
       b1.zne_sum_week = 30000;
       b2.zne_sum_week = 30000;
       b3.zne_sum_week = 30000;
       b4.zne_sum_week = 30000;
       query.on('row', function(row){
           //results.push(row);
                  if(row['address'] == 215){
                     b1.energy_sum_week = row['kitchen'] + row['plugload'] + row['lights'] + row['ev'] + row['hvac'] + row['instahot'] - row['solar'];
                   }
                   else if (row['address'] == 1590) {
                     b2.energy_sum_week = row['kitchen'] + row['plugload'] + row['lights'] + row['ev'] + row['hvac'] + row['instahot'] - row['solar'];

                   } else if (row['address'] == 1605) {
                     console.log(row);
                     b3.energy_sum_week = row['kitchen'] + row['plugload'] + row['lights'] + row['ev'] + row['hvac'] + row['instahot'] - row['solar'];

                   } else if (row['address'] == 1715) {
                     b4.energy_sum_week = row['kitchen'] + row['plugload'] + row['lights'] + row['ev'] + row['hvac'] + row['instahot'] - row['solar'];
                   }

       });
       query.on('end', function(){
         done();
         //make zne lower than everything
         results.push(b1);
         results.push(b2);
         results.push(b3);
         results.push(b4);
         resp.json(results);

       });

  });

});


module.exports = router;

似乎无法识别响应对象。尝试了很多不同的事情,比如将请求和响应传递给查询回调,并使用promises。 在这里有点绝望:/

2 个答案:

答案 0 :(得分:7)

当前上下文中不存在res变量,您可能期望该行

router.get('/api/leaderboard', function(resp, req){

有这个表格

router.get('/api/leaderboard', function(req, res){

答案 1 :(得分:0)

您正在将resp作为req对象传递,将req作为resp对象传递。 尝试更改订单。

  router.get('/api/leaderboard', function(req, resp){...}