node.js - nodejs 表示嵌套的 sequelize 异步等待

标签 node.js express asynchronous nested sequelize.js

我无法使嵌套逻辑起作用。我需要合并 2 个表中的数据并将其返回给请求。我不想要连接表,因为我需要先从 tableA 返回单个记录,然后在返回之前与 tableB 记录结合。下面是我的简化代码

exports.get_caution_reasons = async (req, res) => {
   let return_data = [];
   await db.sequelize.query("SELECT TableA xxxxx",{
                type: QueryTypes.SELECT
            }).then(recordA => {
                for (let index = 0; index < recordA.length; index++) {
                    return_data.push({recordA[index].xxx, recordA[index].yyy})
                    db.sequelize.query("SELECT TableB xxxxx WHERE zzz=recordA.zzz",{
                       type: QueryTypes.SELECT
                    }).then(recordB => {
                        for (let index = 0; index < recordB.length; index++) {
                            return_data.push({recordB[index].xxx, recordB[index].yyy}) 
                        }   
                    })
                }
                res.status(200).json({data: return_data});
            })
};
它只返回 TableA 的记录。我尝试了各种异步并等待在那里获取 recordB 但没有成功。任何帮助都是有用的。

最佳答案

可能这样的事情应该有效:

exports.get_caution_reasons = async (req, res, next) => {
    try {
        let options = { type: QueryTypes.SELECT }
        let data = []
        let result_a = await db.sequelize.query("SELECT TableA xxxxx", options)
        for (let index = 0; index < result_a.length; index++) {
            data.push({ /* whatever you need... */ })
            let result_b = await db.sequelize.query("SELECT TableB xxxxx WHERE zzz=recordA.zzz", options)
            for (let index = 0; index < result_b.length; index++) {
                data.push({ /* ... */ })
            }
        }
        res.json({ data })
    } catch (err) {
        next(err)
    }
}

关于node.js - nodejs 表示嵌套的 sequelize 异步等待,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67873203/

相关文章:

node.js - 重新启动 Node 时套接字的奇怪行为 - 有什么想法吗?

forms - Nodejs POST 请求多部分/表单数据

javascript - 鉴于node.js通常与NoSQL数据库相关联,与关系数据库相比,node.js是否更适合NoSQL数据库?

javascript - 如何使用 node.js、express 和 ejs 在字符串中传递 html 标签

javascript - 拦截器上的 axios 多请求

node.js - time_wait 过多的 Node 应用程序

javascript - $http.delete 回调在基本 CRUD 应用程序中未触发

node.js - 如何将 Intellisense 文件导入 vsCode (Visual Studio Code)

javascript - 将异步函数中的数组添加到传单 react 中不起作用

java - Java/Junit 中的异步单元测试 - 一个非常简单但不成功的示例