【发布时间】:2021-07-02 16:52:30
【问题描述】:
我正在构建一个应用程序,用户必须在其中使用 OTP 进行验证。我正在生成 OTP,但无法将其发送给用户,因为即使我使用了 await,控件也没有等待
exports.generateOtp = async (req, res, next) => {
var phoneNumber = req.params.phonenumber;
var otp = otpGenerator.generate(6, { alphabets: false, upperCase: false, specialChars: false });
var data = '';
var generatedJson;
var url = "https://www.smsgatewayhub.com/api/mt/SendSMS?APIKey=myapikey&senderid=ID&channel=OTP&DCS=8&flashsms=0&number=" + phoneNumber + "&text= Your OTP for registration is " + otp + " Maltose Bio Innovations &route=31";
try {
var request = await https.get(url, function (result,) {
result.on('data', function (chunk) {
data += chunk;
});
result.on('end', async function () {
generatedJson = JSON.parse(data);
console.log(generatedJson.MessageData[0].MessageId);
const newOtp = new OTP({
code: otp,
messageId: generatedJson.MessageData[0].MessageId
})
newOtp.save();
})
}).on("error", (err) => {
console.log("Error: " + err.message);
});
await res.status(201).json({
message: 'OTP Generated',
messageId: generatedJson.MessageData[0].MessageId
});
} catch (err) {
next(err);
}
}
我能够发送 SMS 并获取消息 ID 并将其保存在数据库中,但我无法发送与 API 中的响应相同的消息 ID
堆栈跟踪。
App TypeError:无法读取未定义的属性“MessageData” 2YHZ0FD9NU6RhrkHdpIKJA
来自 URL 的 JSON 响应是
{ 错误代码: '000', 错误消息:'成功', JobId: '532', 消息数据: [ {编号:'9191**09', MessageId: 'IKjXq5FOzUmB2PvxeBvqoA', 信息: '您的注册 OTP 是 378472 Maltose Bio Innovations' } ] }
【问题讨论】:
标签: node.js https async-await