【发布时间】:2019-01-26 18:31:49
【问题描述】:
我对@987654322@ 比较陌生,我正在创建一个服务器,该服务器将接受来自移动应用程序的POST 请求,该移动应用程序的主体包含一个凭据,然后将通过GET 验证另一个服务器。如果GET 响应验证凭据,则提取UID 并调用firebase admin SDK 以创建自定义令牌。这是代码的 sn-p 和两个调用的函数,(a) 验证凭据,(b) 生成自定义令牌。
//Listen for app to POST Credential
app.post('/', function(request, response) {
console.log('Request Body: ',request.body);
var Credential = request.body;
//Validate Credential
validateCredential(Credential)
//Get Authorization Token
getToken(userID)
//Return Token for POST Response
response.set('Content-Type','Text');
response.end(firebaseAuthToken);
});
//Create listener for POST function
app.listen(port, function() {
console.log('AuthServer is running and listening on port '+port);
});
//Function to Validate Credential
async function validateCredential(crdntl) {
//Call Service to validate Credential received
axios({
method: 'get',
url: 'https://.....',
})
.then(function(response) {
...check credential validation data
})
.catch(function (error) {
console.log('ERROR: Unable to Validate Credential');
//Unable to create Validate Credential so return error message for POST response
return ('ERROR1');
});
}
async function getToken(uid) {
admin.auth().createCustomToken(uid)
.then(function(customToken) {
var AuthToken = customToken;
var decoded = jwt.decode(AuthToken);
console.log('Decoded Token: '+'\n',decoded);
//Return Authorization Token for POST response
return (AuthToken);
})
.catch(function(error) {
console.log('ERROR: Unable to Create Custom Token', error);
//Unable to create Token so return error message for POST response
return ('ERROR2');
});
}
}
我需要返回 validateCredential 函数的结果,并将其结果传递给 getToken 函数并返回其结果,以便发送 POST 响应。我知道这些函数是异步的,我可以将它们与回调或承诺链接起来。
真正的问题是如何让 POST 响应等待来自 getToken 函数的回调,因为最终目标是将自定义令牌传递回 POST 响应正文中的移动应用程序。 任何帮助将不胜感激。
【问题讨论】:
-
在
validateCredential中返回Promise,然后在.post处理程序中返回await(或.then)
标签: node.js asynchronous post asynccallback