如何使用Nodejs API获取数据



我正在使用Nodejs和使用expressjs,现在我想从数据库(mysql)获得数据,但我得到以下错误

"await is only valid for async function"

如何解决这个问题,这是我当前的代码

static async sendOtp(phone_number) {
var otp=Math.floor(1000 + Math.random() * 9999);
var config = {
method: 'get',
maxBodyLength: Infinity,
url: 'http://2factor.in/API/V1/XXXXXXXXXXXXXXXX/SMS/+91XXXXXXXXXX/12345/XXXXXXXX',
headers: { }
};
axios(config)
.then(function (response) {

const sql = "SELECT phoneNumber FROM verifyOtp WHERE phoneNumber = '${phone_number}'";
const [rows, fields] = await pool.execute(sql);
console.log('total rows are '+ rows);
if(rows>0)
{
//further logic 1
}
else
{
//further logic 2
}
})
.catch(function (error) {
return 'error';
});
}

您可以通过两种方式处理promise,使用thenawait。在整个代码库中相同地使用其中一个是一个很好的编码实践。我建议你更多地使用async,await结构,这样你可以保持代码结构清晰。当定义使用await时,需要在函数名前附加async

async内部函数

这个工作吗?

static sendOtp(phone_number) {  // <------------   REMOVED `ASYNC` HERE
var otp=Math.floor(1000 + Math.random() * 9999);
var config = {
method: 'get',
maxBodyLength: Infinity,
url: 'http://2factor.in/API/V1/XXXXXXXXXXXXXXXX/SMS/+91XXXXXXXXXX/12345/XXXXXXXX',
headers: { }
};
axios(config)
.then(async function (response) { // <-------------- ADDED `ASYNC` HERE

const sql = "SELECT phoneNumber FROM verifyOtp WHERE phoneNumber = '${phone_number}'";
const [rows, fields] = await pool.execute(sql);
console.log('total rows are '+ rows);
if(rows>0)
{
//further logic 1
}
else
{
//further logic 2
}
})
.catch(function (error) {
return 'error';
});
}

最新更新