如何在 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 包含子句查询在另一个表中没有条目的记录