NodeJS - 无法正确创建递归 MySQL 请求
Posted
技术标签:
【中文标题】NodeJS - 无法正确创建递归 MySQL 请求【英文标题】:NodeJS - unable to create a recursive MySQL request properly 【发布时间】:2022-01-14 04:44:58 【问题描述】:我有一个名为categories
的表,它应该包含我网站上可用文章的类别。我想在表中有一个父子系统,其中没有父项的类别的parent
列的值为0。具有父类别的类别将在其 parent
列中保存其父类别的 ID。
为了查询它,我创建了这个函数:
function categoryTree(table, parent = 0)
var categTreeArr = [];
return new Promise(resolve =>
dbCon.promise().execute("select * from " + table + " where parent = " + parent, []).then(function (err, result, fields)
result.forEach(e =>
var categTreeArrNext = categoryTree(table, e.id).then((value) =>
categTreeArr.push([e.img, e.name, e.slug, value]);
);
);
resolve(categTreeArr);
)
)
在我的索引页面上,我使用了这段代码来调用函数:
categArr = myModule.categoryTree("course_category", 0).then(value =>
setValue(row, response, value)
console.log(value)
);
这给了我一个UnhandledPromiseRejectionWarning
。请帮忙。
PS:我是 NodeJS 的新手。如果这个问题有任何错误,请不要举报。如果问题不清楚,我会在评论中澄清。
【问题讨论】:
【参考方案1】:显然,您的承诺被拒绝,并且没有 catch
块来处理它。尝试捕捉整个函数,看看实际发生了什么。
categArr = myModule.categoryTree("course_category", 0).then(value =>
setValue(row, response, value)
console.log(value)
).catch(e => console.log(e));
【讨论】:
我发现相反 - 我没有创建一个查询数据库并对结果进行相应排序的函数,而是在索引页面内调用 mysql2 查询,然后将其传递给一个对其进行排序的函数以父子树的形式。这样我可以使代码更简单并避免错误。不过感谢您的回复-将来会有所帮助:)以上是关于NodeJS - 无法正确创建递归 MySQL 请求的主要内容,如果未能解决你的问题,请参考以下文章