我对 NodeJS 相当陌生,我正在努力了解这里发生的事情以及为什么我收到错误:“SyntaxError: await is only valid in async function” for await doScrape(results[i].productUrl);
我查看了其他示例,但仍然无法发现问题所在。非常感谢任何帮助。谢谢。
const mysql = require('mysql');
const axios = require('axios');
async function doScrape(url) {
try {
console.log('scraping');
const response = await axios.get('https://###########.com/dev?url=' + url);
console.log(response.status);
console.log(response);
} catch (error) {
console.error(error);
}
}
module.exports.dailyScraperScheduler = async (event) => {
var con = mysql.createConnection({
host: "#####",
user: "#####",
password: "#####",
database: "####"
});
let sql = 'SELECT productUrl FROM ######### ppw INNER JOIN products \
p ON p.productId = ppw.productId WHERE IFNULL(ppw.lastUpdated,CURDATE() \
- INTERVAL 1 DAY) < CURDATE()'
let getProducts = async (sql, params,results) => {
return new Promise((resolve, reject) => {
con.connect((err, connection) => {
con.query(sql, params, (err, results) => {
if (err){
reject(err);
}
resolve(results);
});
});
});
};
await getProducts(sql)
.then(function (results) {
for (var i = 0; i < results.length; i++) {
console.log(results[i].productUrl);
await doScrape(results[i].productUrl);
};
});
};
最好不要将“then”与“async/await”结合使用。编写该代码的更正确方法是这样的:
const results = await getProducts(SQL);
for (var i = 0; i < results.length; i++) {
console.log(results[i].productUrl);
await doScrape(results[i].productUrl);
};
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句