Estoy trabajando con un servicio web REST en Express y me gustaría obtener un objeto que contenga las horas que puse en el parámetro.

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

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

router.get('/test', function(req, res) {
    var	responseObject = { messages: 'OK' };
    res.send(responseObject);
})

router.get('/api/consommation/:heure', function(req, res) {
    var	heure = req.query.heure;
    var responseObject = [{
        "heure": "08",
        "prix": "0.1593"
    }, {
        "heure": "09",
        "prix": "0.1593"
    }, {
        "heure": "01",
        "prix": "0.1252"
    }, {
        "heure": "02",
        "prix": "0.1252"
    }, {
        "heure": "03",
        "prix": "0.1252"
    }];

    var jsonContent = JSON.parse(responseObject);
        jsonContent.forEach(function(obj) {
        obj.forEach(function(o) {
            if (o['heure'] == heure) 
                console.log(o);     
        });
    });

    res.json(jsonContent);
});

module.exports = router;

Por lo tanto, me gustaría devolver mi objeto que contiene las horas ingresadas en el parámetro y su precio.

0
SAHLI Helmi 29 oct. 2017 a las 22:21

4 respuestas

La mejor respuesta

Use responseObject directamente y elimine el bucle foreach interno.

heure = 01; 
var responseObject = [
    {
        "heure": "08",
        "prix": "0.1593"
    },
    {
        "heure": "09",
        "prix": "0.1593"
    },
    {
        "heure": "01",
        "prix": "0.1252"
    },
    {
        "heure": "02",
        "prix": "0.1252"
    },
    {
        "heure": "03",
        "prix": "0.1252"
    }
];

responseObject.forEach(function (obj) {
        if (obj['heure'] == heure)
            console.log(obj);
})
1
kgangadhar 29 oct. 2017 a las 19:42

Este es el código final:

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

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

router.get('/test', function(req, res){
	var	responseObject = {messages : 'OK'};
	res.send(responseObject);
})

router.get('/api/consommation', function(req, res, next){
	var	heure = req.param('heure');
	var responseObject = [ 

        { "heure" :"08",
          "prix" : "0.1593" },
        { "heure" :"09",
          "prix" : "0.1593" },
        { "heure" :"10",
          "prix" : "0.1593" },
        { "heure" :"11",
          "prix" : "0.1593" },
        { "heure" :"12",
          "prix" : "0.1593" },
        { "heure" :"13",
          "prix" : "0.1593" },
        { "heure" :"14",
          "prix" : "0.1593" },        
        { "heure" :"15",
          "prix" : "0.1593" },  
        { "heure" :"16",
          "prix" : "0.1593" },
        { "heure" :"17",
          "prix" : "0.1593" },
        { "heure" :"18",
          "prix" : "0.1593"},
        { "heure" :"19",
          "prix" : "0.1593" },
        { "heure" :"20",
          "prix" : "0.1593" },
        { "heure" :"21",
          "prix" : "0.1593" },
        { "heure" :"22",
          "prix" : "0.1593" },
        { "heure" :"23",
          "prix" : "0.1593" },
        { "heure" :"00",
          "prix" : "0.1252" },
        { "heure" :"01",
          "prix" : "0.1252"},
        { "heure" :"02",
          "prix" : "0.1252" },
        { "heure" :"03",
          "prix" : "0.1252" }, 
       { "heure" :"04",
          "prix" : "0.1252" }, 
       { "heure" :"05",
          "prix" : "0.1252" },
       { "heure" :"06",
          "prix" : "0.1252" },
       { "heure" :"07",
          "prix" : "0.1252" },
   
 ];
  responseObject.forEach(function (obj) {
        if (obj['heure'] == heure)
            res.json(obj);
        else
          return next;

  });

});

module.exports = router;

Y mi problema principal fue que no puse el parámetro 'siguiente' en mi función y lo devolví más tarde GRACIAS A TODOS

0
SAHLI Helmi 29 oct. 2017 a las 20:49

El error está ahí porque está intentando usar JSON.parse en el objeto JS en lugar de cadena (ese método es para analizar la cadena JSON).

Simplemente suelte la línea var jsonContent = JSON.parse(responseObject); y use responseObject directamente.

1
Martin Adámek 29 oct. 2017 a las 19:34

No es necesario var jsonContent = JSON.parse(responseObject); ya que json ya está analizado.

Reemplazar

var jsonContent = JSON.parse(responseObject);

Por

var jsonContent =responseObject;
0
Shishir Arora 29 oct. 2017 a las 19:34