Nicolas Salas Allende
Nicolas Salas Allende

Reputation: 21

Sequelize Aliases

I am working with sequelize and i have a model with two foreign keys

app.schemas.messengers.belongsTo(app.schemas.users, {
    foreignKey: 'id_user_to',
    as: 'to'
});

app.schemas.messengers.belongsTo(app.schemas.users, {
    foreignKey: 'id_user_from',
    as: 'from'
});

and the result of the query must return all messages of this specific user this is the code of the query

 return Users.findAll({
     attributes: ['uuid', 'id', 'profile_pic', 'firstname', 'lastname', 'online'],
            where: whereUser,
            include: [{
                model: Messengers,
                as: 'from',
                // as: 'to',
                where: whereMessenger,
                $or: [{
                        id_user_to: user.id,
                    },
                    {
                        id_user_from: user.id

                    }
                ],
                order: [
                    ['createdAt', 'ASC'],
                ],
            }]
        })

but only returns the message of users who write me not the messages to the user i wrote. its there any way so I can put two aliases on the as attribute of sequelize, or is there other way to do so?

Upvotes: 1

Views: 368

Answers (1)

KenOn10
KenOn10

Reputation: 1968

You have to include twice, e.g.

   ...
   include: [
   {
      model: Messengers,
      as: 'from'                
      /* other stuff */
   },
   {
      model: Messengers,
      as: 'to'                
      /* other stuff */
   }
  ],
  ...

Also, you may have trouble with your alias names, as 'to' and 'from' are reserved words. I recommend msgTo and msgFrom instead...

Upvotes: 1

Related Questions