我目前正在为我的机构开发应用程序并遇到以下问题。 我想允许用户检查数据库中的一些东西(目前使用firebase)。由于我必须从外部服务器检查一些东西,我设置了一个node.js服务器来发送更改的通知。我想将此服务器用作Firebase和App之间的链接,以满足更复杂的要求。
对于我的节点服务器和应用程序之间的门,我用快递...... 我设置了基本的东西,但发生了以下问题,我不知道如何解决这个问题......
例如,我打开API登录用户帐户,因此我向服务器发送了带有用户名和身份验证令牌的请求。但现在问题出现了。由于服务器必须从Firebase进行检查,因此我无法对该值进行任何操作,因为我不知道何时获取它,而且我不知道如何使用异步执行此操作。
如果有人知道怎么做,这对我有帮助。如果这个上面的场景是混淆一个简单的事情:
当我收到请求(快递)时,如何从Firebase发送值...并在价值加载后发送请求?
如果有必要,我愿意更改数据库,例如MongoDB或其他方面的帮助。
答案 0 :(得分:1)
像这样的问题的一般解决方案是这样的:
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
个对象。