Sequelize relationship query returns duplicate data(Sequelize 关系查询返回重复数据)
问题描述
我正在使用 Sequelize 关系查询指定客户的客户订单.
index.js
var results2 = await customerService.getOrders(1);控制台.log(结果2);service.js
exports.getOrders = function (id) {返回 customerModel.findAll({生:真的,包括: [{型号:订单型号,其中:{ customer_idcustomer:id }}],}).then(r => r);};结果
[ { idcustomer: 1,客户名称:'你好世界','orders.idorder': 1,'orders.orderdesc': '订单描述 1','orders.customer_idcustomer': 1 },{ id客户:1,客户名称:'你好世界','orders.idorder': 2,'orders.orderdesc': '测试 456','orders.customer_idcustomer': 1 },{ id客户:1,客户名称:'你好世界','orders.idorder': 3,'orders.orderdesc': '测试 123','orders.customer_idcustomer': 1 } ]预期
[ { idcustomer: 1,客户名称:'你好世界','命令: [{'orders.idorder': 1,'orders.orderdesc': '订单描述 1','orders.customer_idcustomer': 1 },},{'orders.idorder': 2,'orders.orderdesc': '订单描述 2','orders.customer_idcustomer': 1 },},{'orders.idorder': 3,'orders.orderdesc': '订单描述 3','orders.customer_idcustomer': 1 },}]]你只需要从查询中删除 raw: true, ,
因为它将返回普通/平面对象,这会将您的对象转换为现在的样子.
exports.getOrders = function (id) {返回 customerModel.findAll({//raw: true,//<------ 删除这一行包括: [{型号:订单型号,其中:{ customer_idcustomer:id }}],}).then(r => r);};<小时><块引用>
注意:您应该根据您的要求将 where 条件放在上层逻辑
exports.getOrders = function (id) {返回 customerModel.findAll({其中: { id: id } ,//raw: true,//<------ 删除这一行包括: [{型号:订单型号}]}).then(r => r);};I'm querying customer orders for a specified customer using Sequelize relationships.
index.js
var results2 = await customerService.getOrders(1);
console.log(results2);
service.js
exports.getOrders = function (id) {
return customerModel.findAll({
raw: true,
include: [{
model: orderModel,
where: { customer_idcustomer: id }
}],
}).then(r => r);
};
results
[ { idcustomer: 1,
customername: 'hello world',
'orders.idorder': 1,
'orders.orderdesc': 'order description 1',
'orders.customer_idcustomer': 1 },
{ idcustomer: 1,
customername: 'hello world',
'orders.idorder': 2,
'orders.orderdesc': 'Test 456',
'orders.customer_idcustomer': 1 },
{ idcustomer: 1,
customername: 'hello world',
'orders.idorder': 3,
'orders.orderdesc': 'Test 123',
'orders.customer_idcustomer': 1 } ]
expected
[ { idcustomer: 1,
customername: 'hello world',
'orders: [{
'orders.idorder': 1,
'orders.orderdesc': 'order description 1',
'orders.customer_idcustomer': 1 },
},
{
'orders.idorder': 2,
'orders.orderdesc': 'order description 2',
'orders.customer_idcustomer': 1 },
},
{
'orders.idorder': 3,
'orders.orderdesc': 'order description 3',
'orders.customer_idcustomer': 1 },
}]
]
All you need is to remove raw: true, from query ,
as it will return plain/flat object , and that will convert your object as it looks now.
exports.getOrders = function (id) {
return customerModel.findAll({
// raw: true, // <------ Just remove this line
include: [{
model: orderModel,
where: { customer_idcustomer: id }
}],
}).then(r => r);
};
Note : You should put the where condition in upper level as per your logic
exports.getOrders = function (id) {
return customerModel.findAll({
where: { id: id } ,
// raw: true, // <------ Just remove this line
include: [{
model: orderModel
}]
}).then(r => r);
};
这篇关于Sequelize 关系查询返回重复数据的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!
本文标题为:Sequelize 关系查询返回重复数据
基础教程推荐
- 如何使用 CSS 显示和隐藏 div? 2022-01-01
- 什么是不使用 jQuery 的经验技术原因? 2022-01-01
- 每次设置弹出窗口的焦点 2022-01-01
- WatchKit 支持 html 吗?有没有像 UIWebview 这样的控制器? 2022-01-01
- Javascript 在多个元素上单击事件侦听器并获取目标 2022-01-01
- jQuery File Upload - 如何识别所有文件何时上传 2022-01-01
- 为什么我在 Vue.js 中得到 ERR_CONNECTION_TIMED_OUT? 2022-01-01
- 如何使用sencha Touch2在单页中显示列表和其他标签 2022-01-01
- Node.js 有没有好的索引/搜索引擎? 2022-01-01
- 如何在特定日期之前获取消息? 2022-01-01
