与MYSQL续集:原始查询返回“重复”结果

时间:2018-11-24 17:36:04

标签: mysql node.js sequelize.js

我有这种方法可以执行原始查询:

 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,      
  });

2 个答案:

答案 0 :(得分:3)

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

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

答案 1 :(得分:1)

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

the thing i also need to explain is that i cannot use the builtin function count()

另一件事:使用join代替