我正在尝试使用sendotp npm模块来验证otp,但是sendOTP.verify方法我将回调的结果设为null。我如何验证otp是否已通过验证。

sendOTP-https://www.npmjs.com/package/sendotp

exports.handler = async (event,context,callback) => {
    const SendOtp = require('sendotp');
    const sendOTP = new SendOtp('260981AZN8sH3O5c551802');
    let mobileNum = event.mobile.toString();
    let otp = event.otp.toString();
    sendOTP.verify(mobileNum, otp, (error, data) => {
        callback(null,{statusCode:200,body:data.type});
    });
}

最佳答案

有两种lambda函数调用类型-同步和异步。同步调用将阻止调用方,该调用方将等待响应。异步调用类型不会阻塞调用方,并且在没有-null-响应的情况下调用后将立即返回。

如果将async关键字放在函数的前面,则指定要异步调用的函数,因此,您得到的null响应是预期的行为。

如果您不希望它是异步的,则将标头更改为

exports.handler = (event,context,callback) =>


请注意,某些服务在调用lambda函数时会使用其预定义的lambda调用类型而不会遵循您的选择(即,当您将lambda函数订阅给s3事件时,它将始终异步调用)。

关于node.js - 由于回调AWS Lambda而变为null,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/54497090/

10-11 07:35