如何在 Sequelize 查询中加入另一个表

Posted

技术标签:

【中文标题】如何在 Sequelize 查询中加入另一个表【英文标题】:How to join another table in Sequelize query 【发布时间】:2021-08-29 07:07:17 【问题描述】:

我的模型中有 Items、Orders 和 OrderRows。 这个查询通过作为参数给出的 order_id 给了我 orderRows,但是 我仍然需要的是 item´s (productname) 而不仅仅是通常在 orderRow 中的 item_id。

我在不同的地方尝试过 include 和 required ,但没有用。

查询在这里:

// GET ORDER-ROWS BY ORDER_ID
orderRowRouter.get('/order/:orderid', async (req, res) => 
    try 
        const rowsByOrder = await Orderrow.findAll(
            where: 
                order_id: req.params.orderid
            
        )
        return res.json(rowsByOrder)
    
    catch (exception) 
        res.json(exception)
    
)

回复如下:

[
    
        "orderrow_id": "1fe71649-d0f1-4cd7-b987-7190e88deede",
        "item_id": "02d5a0ee-f19f-458c-98d2-df51fea551e7",
        "order_id": "9fb9d681-7555-4e6c-a92b-921aa008fc19",
        "amount": 2,
        "createdAt": "2021-06-11T21:25:45.604Z",
        "updatedAt": "2021-06-11T21:25:45.604Z"
    
]

在 item_id 的位置,我想在 Item 模型和 db 表中使用 productName。

【问题讨论】:

这能回答你的问题吗? How to make join queries using Sequelize on Node.js 【参考方案1】:

我终于像这样使用原始 SQL 查询:

//added to imports
const db = require('../models/index')

.......

orderRowRouter.get('/order/:orderid', async (req, res) => 
    try 
        const [results, metadata] = await db.sequelize.query
             ("SELECT * FROM orderrow LEFT JOIN item ON item.item_id = orderrow.item_id WHERE  order_id = " + "'" + orderid + "'")

        console.log(results)
        return res.json(results)
    
    catch (exception) 
        console.log(exception)
        res.json(exception)
    
)

【讨论】:

以上是关于如何在 Sequelize 查询中加入另一个表的主要内容,如果未能解决你的问题,请参考以下文章

使用 sequelize 通过相同两个表之间的单独联结表进行查询

使用 Sequelize 包含子句查询在另一个表中没有条目的记录

如何在 sequelize 查询中使用查询参数作为列名

如何在 MySql 中使用 sequelize 运行多个原始查询?

如何使用 sequelize.js 从关联模型中加载属性

如何查询多对多关系sequelize?