Javascript 如何在路由中呈现回调JSON响应
我想将JSON响应Javascript 如何在路由中呈现回调JSON响应,javascript,json,node.js,Javascript,Json,Node.js,我想将JSON响应body传递给route index.js中的render函数 这就是我目前所拥有的,我无法理解如何构造它,以便可以在res.render中访问body router.get('/', function(req, res, next) { var request = require('request') request.post('https://getpocket.com/v3/get', { headers: {'content-type':
body
传递给route index.js中的render函数
这就是我目前所拥有的,我无法理解如何构造它,以便可以在res.render中访问body
router.get('/', function(req, res, next) {
var request = require('request')
request.post('https://getpocket.com/v3/get', {
headers: {'content-type':'application/json'},
body: JSON.stringify({
consumer_key:'...',
access_token:'...',
tag: 'nodejs'
})
}, function (err, res, body) {
// how to pass body to render?
})
res.render('index', {
title: 'Express',
data: body
});
});
你很接近。试试这个
router.get('/', function(req, res, next) {
var request = require('request')
request.post('https://getpocket.com/v3/get', {
headers: {'content-type':'application/json'},
body: JSON.stringify({
consumer_key:'...',
access_token:'...',
tag: 'nodejs'
})
}, function (err, response, body) {// notice i changed res to response, to differentiate between express response object and request's response
res.render('index', {
title: 'Express',
data: body
});
})
});
在发表文章之前,将body创建为变量,然后简单地重用该变量?在渲染中添加一个新路由,并在回调中调用该路由。我以前尝试过这样做,但它抱怨res.render typeOf函数,但奇怪的是,这次它可以工作。在每个路由中实现请求是正常的做法吗?我最初在一个自定义模块中有此请求。实际上,问题是原始代码中有两个res
变量。一个来自express,它有render
方法,另一个来自请求模块,它没有render
方法。因此,当您从request.post
的回调访问res
时,它实际上指向request
中的res
。这就是为什么你早些时候犯了那个错误。现在,由于我将参数的名称更改为response
,它工作正常。谢谢。您通常在每个路由中执行请求呼叫吗?或者理想情况下,我需要一个实现所有数据请求的自定义模块?这取决于具体情况。但是,我认为在你的情况下,一个单独的模块会更好。它使“完全删除请求模块并插入其他模块而不是请求”这样的事情变得更容易。