无法在回调函数内响应API调用(在NodeJS请求中)

时间:2018-10-08 17:08:10

标签: javascript node.js post callback request

我的NodeJS中有此代码。如果我将return放在request.post调用之前,则会得到响应,但在回调内部,我会得到{data:null}。

exports.addItem = functions.https.onCall((req, context)=>{
  request.post(
  {url: submitUrl,
  form: req},
  function (error, response, body) {
      if (!error && response.statusCode == 200) {
          console.log(body);
          return {result: "OK"};
          }
      else{
        return {result: "Not OK"}
      }
      }
  );
});

如果有帮助,我可以在firebase中运行此代码,并在JS中使用firebase函数调用它

2 个答案:

答案 0 :(得分:0)

return将导致函数结束,但在这样的异步回调中不会将任何内容发送给用户。没有要控制的调用功能要返回的值

我不确定您要达到的目标,但是在这种情况下使用带有return的值将导致该值丢失。

如果您需要提高对Node.js中异步回调习惯的理解,请查看https://blog.risingstack.com/node-hero-async-programming-in-node-js/

答案 1 :(得分:0)

您应该使用async / await来解决此问题

exports.addItem = functions.https.onCall(async (req, res)=>{
  await request.post(
  {url: submitUrl,
  form: req},
  function (error, response, body) {
      if (!error && response.statusCode == 200) {
          console.log(body);
          return {result: "OK"};
          }
      else{
        return {result: "Not OK"}
      }
      }
  );
});