Всем привет!
Подскажите пожалуйста, в моем проекте есть отношения многие ко многим:
const User = sequelize.define('user', {
id: {type: DataTypes.INTEGER, primaryKey: true, autoIncrement: true},
login: {type: DataTypes.STRING, unique: true},
password: {type: DataTypes.STRING},
role: {type: DataTypes.STRING, defaultValue: 'USER'},
img : {type: DataTypes.STRING, defaultValue: 'default_avatar.jpg'},
deleted: {type: DataTypes.BOOLEAN, defaultValue: false},
})
const Brain = sequelize.define('brain', {
id: {type: DataTypes.INTEGER, primaryKey: true, autoIncrement: true},
name: {type: DataTypes.STRING, unique: true},
img: {type: DataTypes.STRING, allowNull: false},
description: {type: DataTypes.TEXT, defaultValue: 'test'},
})
const UserBrain = sequelize.define('user_brain', {
id: {type: DataTypes.INTEGER, primaryKey: true, autoIncrement: true},
userId: {type: DataTypes.INTEGER, references: {model: User, key: 'id'}},
brainId: {type: DataTypes.INTEGER, references: {model: Brain, key: 'id'}}
})
User.belongsToMany(Brain, {through: UserBrain, as: 'brain'})
Brain.belongsToMany(User, {through: UserBrain, as: 'user'})
Я уже обращался к связывающей таблице, следующим образом:
Пример
async getOneUserBrains(req, res, next) {
try {
const {id} = req.params
const userBrain = await Brain.findAll(
{
include: [{
model: User,
as: 'user',
where: {'id': id},
attributes: ['id']
}]
},
)
return res.json(userBrain)
} catch (e) {
next(ApiError.badRequest(e.message))
}
}
Теперь же, не получается разобраться.
Сейчас мне нужно достать некие данные, в сыром виде я делаю это следующим SQL запросом:
select "brainId", b.name, count("brainId") as popularity from user_brains
join brains b on b.id = user_brains."brainId"
group by "brainId", b.name
order by count("brainId") desc
Как правильно сформировать этот запрос через sequelize?