Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/39.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
Node.js Express res.send不会返回在单独文件中运行的模块导出函数的结果_Node.js_Express - Fatal编程技术网

Node.js Express 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

我认为我的问题可能是由于没有用于异步请求调用的回调/承诺

然而,我仍然没有完全理解node.js的异步回调

我希望有人能解释我如何让我的Express route调用我的API,该API包含在一个名为myapi.js的单独文件中,该文件包含一个导出供运行Express的main.js使用的函数

我希望导出函数调用返回的响应通过res.send发送到浏览器

非常感谢您的帮助


[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


阅读更多:如果您愿意,请以承诺的方式实施。

这对我的一些用例非常有帮助,使事情变得非常简单。这对我的一些用例非常有帮助,使事情变得非常简单。这对我更好地理解我缺少的东西非常有帮助。谢谢你的回复。这对我更好地理解我错过了什么非常有帮助。谢谢你的回复。