我有这种方法可以执行原始查询:
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,
});
答案 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代替