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 请求的主要内容,如果未能解决你的问题,请参考以下文章
错误 1452 MySQL 和 NodeJS。为啥数据库不能正确引用我的表?
使用 NodeJS 在 mysql 中未正确保存日期(比实际日期少一天)
使用 dcrypt 对密码进行哈希处理后,使用 MySQL 中的 NodeJs 登录用户
npm : 无法将“npm”项识别为 cmdlet函数脚本文件或可运行程序的名称。请检查名称的拼写,如果包括路径,请确保路径正确,然后再试一次。