【问题标题】:NodeJS - unable to create a recursive MySQL request properlyNodeJS - 无法正确创建递归 MySQL 请求
【发布时间】: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 的新手。如果这个问题有任何错误,请不要举报。如果问题不清楚,我会在评论中澄清。

【问题讨论】:

    标签: mysql node.js express promise ejs


    【解决方案1】:

    显然,您的承诺被拒绝,并且没有 catch 块来处理它。尝试捕捉整个函数,看看实际发生了什么。

    categArr = myModule.categoryTree("course_category", 0).then(value => {
                setValue(row, response, value)
                console.log(value)
    }).catch(e => console.log(e));
    

    【讨论】:

    • 我发现相反 - 我没有创建一个查询数据库并对结果进行相应排序的函数,而是在索引页面内调用 mysql2 查询,然后将其传递给一个对其进行排序的函数以父子树的形式。这样我可以使代码更简单并避免错误。不过感谢您的回复-将来会有所帮助:)
    猜你喜欢
    • 2022-08-22
    • 2018-11-25
    • 2018-02-09
    • 1970-01-01
    • 1970-01-01
    • 2020-08-11
    • 2016-01-12
    • 2019-03-09
    • 1970-01-01
    相关资源
    最近更新 更多