sequelize with mysql:raw query返回“duplicate”结果

fwzugrvs  于 2021-06-17  发布在  Mysql
关注(0)|答案(2)|浏览(374)

我有一个执行原始查询的方法:

Friendship.getFriends= async (userId)=>{

      const result = await sequelize.query(`select id,email from users where 
      users.id in(SELECT friendId FROM friendships where friendships.userId = 
     ${userId})`);

      return result;
   };

结果似乎包含相同的精确数据,但有两次:

[ [ TextRow { id: 6, email: 'example3@gmail.com' },
TextRow { id: 1, email: 'yoyo@gmail.com' } ],
[ TextRow { id: 6, email: 'example3@gmail.com' },
TextRow { id: 1, email: 'yoyo@gmail.com' } ] ]

这个查询实际上只应该找到两条记录(id为1和6),但是它返回两次具有相同记录的数组。
有人能解释一下这是怎么回事吗?
编辑:模型:

module.exports = (sequelize, DataTypes) => {
   const User = sequelize.define('User', {
     email: { type: DataTypes.STRING, unique: true },    
     password: DataTypes.STRING,
     isActive:{type:DataTypes.BOOLEAN,defaultValue:true}
  });

module.exports = (sequelize, DataTypes) => {
   const Friendship = sequelize.define('Friendship', {
     userId: DataTypes.INTEGER,    
     friendId: DataTypes.INTEGER,      
  });
qij5mzcb

qij5mzcb1#

我不确定,但尝试下面的代码。

const result = await sequelize.query("select id,email from users where 
      users.id in(SELECT friendId FROM friendships where friendships.userId = 
     ${userId})", {type: sequelize.QueryTypes.SELECT});

还有一件事:使用join而不是in

disbfnqx

disbfnqx2#

尝试在第二个参数中将查询类型设置为select。

sequelize.query(queryString, {type: sequelize.QueryTypes.SELECT})

相关问题