Node.js Express res.send不会返回在单独文件中运行的模块导出函数的结果
我认为我的问题可能是由于没有用于异步请求调用的回调/承诺 然而,我仍然没有完全理解node.js的异步回调 我希望有人能解释我如何让我的Express route调用我的API,该API包含在一个名为myapi.js的单独文件中,该文件包含一个导出供运行Express的main.js使用的函数 我希望导出函数调用返回的响应通过res.send发送到浏览器 非常感谢您的帮助Node.js Express res.send不会返回在单独文件中运行的模块导出函数的结果,node.js,express,Node.js,Express,我认为我的问题可能是由于没有用于异步请求调用的回调/承诺 然而,我仍然没有完全理解node.js的异步回调 我希望有人能解释我如何让我的Express route调用我的API,该API包含在一个名为myapi.js的单独文件中,该文件包含一个导出供运行Express的main.js使用的函数 我希望导出函数调用返回的响应通过res.send发送到浏览器 非常感谢您的帮助 [main.js-Express应用程序] var myapi = require('./myapi'); // all
[main.js-Express应用程序]
var myapi = require('./myapi');
// all of my express stuff goes here and eventually i setup my route below
app.get('/orders/complete/:date', function (req, res) {
res.send(myapi.getCompletedOrders(req.params.date));
});
var myapi = require('./myapi');
// all of my express stuff goes here and eventually i setup my route below
app.get('/orders/complete/:date', function (req, res) {
myapi.getCompletedOrders(req.params.date).pipe(res);
});
[myapi.js]
var request = require('request');
module.exports = {
getCompletedOrders: function(date){
request('https://some.api.getorders.json?' + '&start=' + date, function (error, response, body) {
//Check for error
if(error){
return console.log('Error:', error);
}
//Check for success status code
if(response.statusCode !== 200){
return console.log('Invalid Status Code Returned:', response.statusCode);
}
var allCompletedOrders = JSON.parse(body);
return allCompletedOrders;
});
}
}
var request = require('request');
module.exports = {
getCompletedOrders: function(date){
// HTTPS GET - Order List Unfulfilled - Request to TopHatters's website.
return request('https://some.api.getorders.json?' + '&start=' + date);
}
}
[main.js-Express应用程序]
var myapi = require('./myapi');
// all of my express stuff goes here and eventually i setup my route below
app.get('/orders/complete/:date', function (req, res) {
res.send(myapi.getCompletedOrders(req.params.date));
});
var myapi = require('./myapi');
// all of my express stuff goes here and eventually i setup my route below
app.get('/orders/complete/:date', function (req, res) {
myapi.getCompletedOrders(req.params.date).pipe(res);
});
[myapi.js]
var request = require('request');
module.exports = {
getCompletedOrders: function(date){
request('https://some.api.getorders.json?' + '&start=' + date, function (error, response, body) {
//Check for error
if(error){
return console.log('Error:', error);
}
//Check for success status code
if(response.statusCode !== 200){
return console.log('Invalid Status Code Returned:', response.statusCode);
}
var allCompletedOrders = JSON.parse(body);
return allCompletedOrders;
});
}
}
var request = require('request');
module.exports = {
getCompletedOrders: function(date){
// HTTPS GET - Order List Unfulfilled - Request to TopHatters's website.
return request('https://some.api.getorders.json?' + '&start=' + date);
}
}
[main.js-Express应用程序]
var myapi = require('./myapi');
// all of my express stuff goes here and eventually i setup my route below
app.get('/orders/complete/:date', function (req, res) {
res.send(myapi.getCompletedOrders(req.params.date));
});
var myapi = require('./myapi');
// all of my express stuff goes here and eventually i setup my route below
app.get('/orders/complete/:date', function (req, res) {
myapi.getCompletedOrders(req.params.date).pipe(res);
});
[myapi.js]
var request = require('request');
module.exports = {
getCompletedOrders: function(date){
request('https://some.api.getorders.json?' + '&start=' + date, function (error, response, body) {
//Check for error
if(error){
return console.log('Error:', error);
}
//Check for success status code
if(response.statusCode !== 200){
return console.log('Invalid Status Code Returned:', response.statusCode);
}
var allCompletedOrders = JSON.parse(body);
return allCompletedOrders;
});
}
}
var request = require('request');
module.exports = {
getCompletedOrders: function(date){
// HTTPS GET - Order List Unfulfilled - Request to TopHatters's website.
return request('https://some.api.getorders.json?' + '&start=' + date);
}
}
正如您所猜测的,您不能简单地从异步函数调用返回值。您应该使用回调或承诺: 回调方式: myapi.js main.js
阅读更多:如果您愿意,可以实现承诺方式。正如您所猜测的,您不能简单地从异步函数调用返回值。您应该使用回调或承诺: 回调方式: myapi.js main.js
阅读更多:如果您愿意,请以承诺的方式实施。这对我的一些用例非常有帮助,使事情变得非常简单。这对我的一些用例非常有帮助,使事情变得非常简单。这对我更好地理解我缺少的东西非常有帮助。谢谢你的回复。这对我更好地理解我错过了什么非常有帮助。谢谢你的回复。