如何解决如何使数组在返回之前等待嵌套循环完成
我有以下嵌套循环功能,该功能循环嵌套JSON对象。它收集数据并将每个迭代添加到数组中,每个数组将是MySql数据库中的一行数据。
不过,仅将最终的完整迭代数据添加到MySql数据库中,因此我相信是将数据保存在循环中的先前数据之上,还是数组变量未在等待所有数据?我不确定
function getCategories(jsonContent) {
var values = [];
try {
for(let i=0; i<jsonContent.length; i++) {
if (jsonContent[i].subcategories) {
var subcat = jsonContent[i].subcategories.length;
for (let n=0; n<subcat; n++) {
if(jsonContent[i].subcategories[n].facetValueData) {
var subsubcat = jsonContent[i].subcategories[n].facetValueData.length;
for (let p=0; p<subsubcat; p++) {
var products = jsonContent[i].subcategories[n].facetValueData[p].productData.length
for (let f=0; f<products; f++) {
var productDataFinal = jsonContent[i].subcategories[n].facetValueData[p].productData[f]
values.push([
0,jsonContent[i].id,jsonContent[i].categoryName,jsonContent[i].subcategories[n].name,jsonContent[i].subcategories[n].code,jsonContent[i].subcategories[n].facetValueData[p].name,jsonContent[i].subcategories[n].facetValueData[p].code,productDataFinal.productDisplayName,productDataFinal.code,productDataFinal.url,productDataFinal.imageUrl,productDataFinal.price.value,productDataFinal.originPrice.value,productDataFinal.price.currencyIso,productDataFinal.inStock,productDataFinal.newProduct,])
}
}
} else {
console.log(`No facetvalue data found at ${jsonContent[i]}`)
}
}
} else {
console.log(`No subcats found at ${jsonContent[i]}`)
}
}
return values;
} catch (e) {
console.error(e)
}
}
然后使用以下方法将数据添加到数据库中:
con.connect(function(err) {
if (err) {console.log("Error adconnecting to db" + err)}
else {console.log("Connected!")}
let valueData = getCategories(jsonContent)
let sqlQuery = 'INSERT INTO data VALUES ?'
con.query(sqlQuery,[valueData],function (err,result) {
if (err) {console.log("Error adding to db" + err)}
else {console.log("Added to table"+result)}
});
});
如果我在return values;
行的上方添加以下代码以将values数组写入单独的json文件,则会将所有正确的数据数组都添加到该文件中,因此在执行过程中它们必定会丢失以某种方式访问数据库?
fs.writeFileSync("data.json",JSON.stringify(values,null,2),(err) => {
if (err) {
console.log(err)
}
console.log(`\n ${parsedResults.length} Results exported successfully to ${outputFile}\n`)
})
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。