Node和Express发送json

时间:2017-11-21 01:04:30

标签: node.js api express

如何将请求中的json(posiciones)传递给res.render以将其发送到索引(我的视图),一切都可以运行到控制台,但是当它到达res.render时标记我的错误:位置不是它被定义

var express = require('express');
var path = require('path');
var bodyParser = require('body-parser');
var cons = require('consolidate');
var dust = require('dustjs-helpers');
var app = express();
const request = require('request');
var port = process.env.PORT || 3001;

app.engine('dust', cons.dust);

app.set('view engine', 'dust');
app.set('views', __dirname + '/views');

app.use(bodyParser.json());
app.use(bodyParser.urlencoded({ extended: false}));

const options = {  
  url: 'http://xx.xx.xx.xx:xxxx/api/positions',
  method: 'GET',
  headers: {
     'Authorization': 'Basic xxxxxxxxxxxxxxxxxxxxxxx',
     'Accept': 'application/json',
     'Content-Type': 'application/json',
 }
};

app.get("/index", function(req, res)  { 
request(options, function(err, response, body) {  
    var posiciones = JSON.parse(body);
    console.log(posiciones);
    res.json(posiciones);
  });
 res.render('index', {devices: posiciones});
});

app.listen(port, function(){
 console.log('servidor iniciado en http://localhost:' + port);
});

1 个答案:

答案 0 :(得分:3)

这是因为您的请求调用异步。在请求回调执行的时候,您的代码已经尝试渲染index。这就是它给出错误的原因。

在回调中呈现index页面 -

app.get("/index", function(req, res)  { 
request(options, function(err, response, body) {  
    var posiciones = JSON.parse(body);
    console.log(posiciones);
    res.render('index', {devices: posiciones});
  });
});