Sequelize是一个非常好用的ORM框架,当然也存在部分情况不方便的时候,需要我们自己写sql语句。
今天在使用过程中,发现一个问题,直接查询,查询结果重复了。
sql语句
select s.id,s.title,s.price,s.discount_price,s.primary_img,s.stock,s.online,c.num from spus s join carts c on c.spu_id = s.id AND c.uid = 1;
代码
static async getDetail(uid) {
const sql = `select s.id,s.title,s.price,s.discount_price,s.primary_img,s.stock,s.online,c.num from spus s join carts c on (c.spu_id = s.id and c.uid = ${uid});`;
return await sequelize.query(sql);
}
本地查询的结果
2 三色牛仔裤 1399 1299 http://127.0.0.1:4000/upload/1583248426524.png 20 1
1 双色牛仔裤 1399 1299 http://i2.sleeve.7yue.pro/n11.png 20 1 6
利用sequelize查询的结果;
[
[
{
"id": 2,
"title": "三色牛仔裤",
"price": 1399,
"discount_price": 1299,
"primary_img": "http://127.0.0.1:4000/upload/1583248426524.png",
"stock": 20,
"online": 1,
"num": 2
},
{
"id": 1,
"title": "双色牛仔裤",
"price": 1399,
"discount_price": 1299,
"primary_img": "http://i2.sleeve.7yue.pro/n11.png",
"stock": 20,
"online": 1,
"num": 6
}
],
[
{
"id": 2,
"title": "三色牛仔裤",
"price": 1399,
"discount_price": 1299,
"primary_img": "http://127.0.0.1:4000/upload/1583248426524.png",
"stock": 20,
"online": 1,
"num": 2
},
{
"id": 1,
"title": "双色牛仔裤",
"price": 1399,
"discount_price": 1299,
"primary_img": "http://i2.sleeve.7yue.pro/n11.png",
"stock": 20,
"online": 1,
"num": 6
}
]
]
可以看到,相同的结果重复出现了。面向搜索引擎编程一波,找到了解决方法。
About sequelize.query get duplicate data #8307
给query加上第二个参数,即可解决。
修正后代码如下:
static async getDetail(uid) {
const sql = `select s.id,s.title,s.price,s.discount_price,s.primary_img,s.stock,s.online,c.num from spus s join carts c on (c.spu_id = s.id and c.uid = ${uid});`;
return await sequelize.query(sql, { type: Sequelize.QueryTypes.SELECT });
}
Just for fun!
本文由 Echo 创作,采用 知识共享署名4.0 国际许可协议进行许可
本站文章除注明转载/出处外,均为本站原创或翻译,转载前请务必署名
最后编辑时间为: Jul 5, 2022 at 11:48 am