Javascript 如何使异步API工作?

Javascript 如何使异步API工作?,javascript,node.js,express,firebase,firebase-realtime-database,Javascript,Node.js,Express,Firebase,Firebase Realtime Database,我目前正在为我的机构开发一个应用程序,遇到了以下问题。 我希望允许用户检查数据库中的某些内容(当前使用firebase)。由于我必须从外部服务器检查某些内容,因此我设置了一个node.js服务器来发送更改通知。我希望将此服务器用作Firebase和应用程序之间的链接,以满足更复杂的要求 对于我的节点服务器和应用程序之间的网关,我使用了express。。。 我设置了基本的东西,但出现了以下问题,我不知道如何解决这个问题 例如,我打开了API以登录到用户帐户,因此我向服务器发送一个带有用户名和身份验

我目前正在为我的机构开发一个应用程序,遇到了以下问题。 我希望允许用户检查数据库中的某些内容(当前使用firebase)。由于我必须从外部服务器检查某些内容,因此我设置了一个node.js服务器来发送更改通知。我希望将此服务器用作Firebase和应用程序之间的链接,以满足更复杂的要求

对于我的节点服务器和应用程序之间的网关,我使用了express。。。 我设置了基本的东西,但出现了以下问题,我不知道如何解决这个问题

例如,我打开了API以登录到用户帐户,因此我向服务器发送一个带有用户名和身份验证令牌的请求。但现在问题出现了。由于服务器必须从Firebase进行检查,因此我无法对该值执行任何操作,因为我不知道何时获得该值,也不知道如何使用async执行此操作

如果有人知道怎么做,我会很有帮助的。如果上面这个场景是为了混淆一件简单的事情:

当我收到请求(express)时,如何从Firebase发送值。。。当值已经加载时发送一个请求


如有必要,我愿意将数据库更改为MongoDB或其他有帮助的数据库。

此类问题的一般解决方案如下:

app.post('/login', function (req, res) {
  makeAsyncCall('some arguments...', function (err, data) {
    if (err) {
      // you have error, send an appropriate error
      // to the client with `res.send`
    } else {
      // you have `data`, check it and use `res.send`
      // to send response to the client
    }
  });
});
因此,在处理程序内部,您运行一个异步函数,该函数接受回调,并在该回调中创建对原始HTTP请求的响应

makeAsyncCall
可以是对其他服务器的另一个HTTP请求,也可以是数据库查询或其他任何内容。甚至可能是超时:

app.get('/delay', function (req, res) {
  setTimeout(function () {
    req.send('Done');
  });
}, 3000);

在内部回调中,您仍然可以访问定义它们的外部函数的参数,例如
req
res
对象。

您应该从上面的链接中检查答案。基本概念是express服务器等待firebase的响应。当您收到firebase的响应时,express server会将数据发送回客户端。感谢响应已签出链接,我会查看它:)感谢快速响应:)我会检查它现在是否工作感谢:)嘿:)只是想知道返回函数是否有类似的技巧。。。我在一个函数1中复制了与api相同的版本,但在这里我得到了一个未定义的错误。。。