Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/37.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Json 无法识别快速REST API响应方法_Json_Node.js_Api_Rest_Express - Fatal编程技术网

Json 无法识别快速REST API响应方法

Json 无法识别快速REST API响应方法,json,node.js,api,rest,express,Json,Node.js,Api,Rest,Express,我有一个非常简单的get请求,它返回我试图实现的json。我已经学习了Express Web Framework REST API的教程,但由于某些原因,我一直遇到相同的错误 错误: TypeError: res.status is not a function 或 index.js: var express = require('express'); var router = express.Router(); var pg = require('pg'); var

我有一个非常简单的get请求,它返回我试图实现的json。我已经学习了Express Web Framework REST API的教程,但由于某些原因,我一直遇到相同的错误

错误:

TypeError: res.status 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;
它似乎无法识别响应对象。尝试了一系列不同的事情,比如向查询回调传递请求和响应,以及使用承诺。 这里有点绝望:/

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

router.get('/api/leaderboard', function(resp, req){
我有这个表格

router.get('/api/leaderboard', function(req, res){
res变量在当前上下文中不存在,您可能希望

router.get('/api/leaderboard', function(resp, req){
我有这个表格

router.get('/api/leaderboard', function(req, res){
您将resp作为req对象传递,将req作为resp对象传递。 试着改变一下顺序

  router.get('/api/leaderboard', function(req, resp){...}
您将resp作为req对象传递,将req作为resp对象传递。 试着改变一下顺序

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

是的,我搞混了!我昨天找到的。应该在睡觉前发布的消息现在我失去了代表:'。但非常感谢您:也要小心意外地进行覆盖。我的问题是,我使用的是基于axios promise的请求,以及何时执行thenres=>{…它会覆盖express route中的原始res对象。我真傻。是的,我弄错了!我昨天找到了它。应该在睡觉前发布,现在我失去了rep:'。但是非常感谢:也要小心意外地进行覆盖。我的问题是,我使用的是基于axios承诺的请求,以及何时执行thenres=>{…它会覆盖快速路线中的原始res对象。我真傻。