gpt4 book ai didi

node.js - 异步函数中的错误处理

转载 作者:行者123 更新时间:2023-12-03 08:46:51 24 4
gpt4 key购买 nike

如果以下功能由于任何原因不起作用,我想向控制台抛出错误。它正在从网站上获取一些数据,并将其写入mongoDB。
例如,如果插入到mongoDB或抓取失败,我想在控制台中得到一条错误消息。我不知道如何使用nodejs归档正确的错误处理(关于promise和东西的0条线索)。

artikel.getData(async () => { for (let i = 0; i < arrayOfArticles.length; i++){
await scrape(i).then((price) => {

console.log('Data ' + arrayOfArticles[i] + ': ' + received);

//Connect to DB
MongoClient.connect(url, {useNewUrlParser: true}, function(err, db) {
if (err) throw err;
let dbo = db.db("testDB");
let insertPart = {
name: arrayOfArticles[i],
site: dealer,
price: price
};


dbo.collection("testcollection").insertOne(insertPart, function(err, res) {
if (err) throw err;
console.log(divide);
console.log("Document inserted");
console.log(divide);
db.close();
});
});
});
}
});

最佳答案

您不应在循环内或API中编写数据库连接代码。它应该在一些配置文件中。

您无需在等待状态下编写.then,而使用try-catch进行错误处理。

artikel.getData(() => {
MongoClient.connect(url, {
useNewUrlParser: true
}, async function (err, db) {
for (let i = 0; i < arrayOfArticles.length; i++) {
try {
const price = await scrape(i);
//Connect to DB
if (err) throw err;
let dbo = db.db("testDB");
let insertPart = {
name: arrayOfArticles[i],
site: dealer,
price: price
};

dbo.collection("testcollection").insertOne(insertPart, function (err, res) {
if (err) {
console.log(err);
throw err
};
console.log(divide);
console.log("Document inserted");
console.log(divide);
});
} catch (error) {
console.log(error);
}
}
db.close();
});
});

关于node.js - 异步函数中的错误处理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51837148/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com