mikey
mikey

Reputation: 1460

Sequelize query on join table

I am trying to querying a join table using sequelize: Here is the model:

db.client.belongsToMany(db.user, {
  through: db.clientUser,
   onDelete: 'cascade',
});
db.user.belongsToMany(db.client, {
   through: db.clientUser,
 });

and this is what I am trying to do:

db.user.findAll({
      where: {
        group_id: 1,
      },
      include: [{
        model: db.clientUser,
        where: {
          is_manager: 1,
        }
      }],
      raw: true,
    })

However I get the following error: client_user is not associated to user!

Any idea what could be the cause of this issue?

Upvotes: 5

Views: 6974

Answers (1)

spamguy
spamguy

Reputation: 1566

You declared a relationship between client from user through clientUser. Although pedantic, its complaint is technically correct: there is no explicitly declared relationship declared between client and clientUser. Nor should there be: your belongsToMany relationship should take care of that. Your query can be adjusted to work with this relationship.

Note: I don't know what tables group_id and is_manager are found in. They may need to be shuffled around.

db.user.findAll({
  where: {
    group_id: 1,
  },
  include: [{
    model: db.client,
    through: {
      where: {
        is_manager: 1, // Assuming clientUser.is_manager?
      },
    }],
  raw: true,
})

Upvotes: 4

Related Questions