@ddgryaz

Как правильно сделать запрос через sequelize?

Всем привет!
Подскажите пожалуйста, в моем проекте есть отношения многие ко многим:
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?
  • Вопрос задан
  • 56 просмотров
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы