sequelize select and include another table alias

30,916

As you have defined alias name in below code is building :

City.hasMany(models.building,{as: 'building', foreignKey: 'cityId'})

But in query , you are using buildings

include: [
  {
     model: Building, as: "buildings" // <---- HERE
  }
]

It should be building :

include: [
   {
         model: Building, as: "building" // <---- HERE
   }
]
Share:
30,916
John
Author by

John

Sofware developer. Love to learn new things.

Updated on November 03, 2020

Comments

  • John
    John over 3 years

    I'm using sequelize to acess a postgres database and I want to query for a city and for example include the "Building" table but I want to rename the output to "buildings" and return the http response but I have this error:

    { SequelizeEagerLoadingError: building is associated to city using an alias. You'v e included an alias (buildings), but it does not match the alias defined in your a ssociation.

        City.findById(req.params.id,{
          include: [
            {
              model: Building, as: "buildings"
            }
          ]
        }).then(city =>{
          console.log(city.id);
             res.status(201).send(city);
        }) .catch(error => {
         console.log(error);
         res.status(400).send(error)
       });
    

    city Model

                const models = require('../models2');
                module.exports = (sequelize, DataTypes) => {
                  const City = sequelize.define('city', {
                  name: { type: DataTypes.STRING, allowNull: false },
                    status: { type: DataTypes.INTEGER, allowNull: false },
                    latitude: { type: DataTypes.BIGINT, allowNull: false },
                    longitude: { type: DataTypes.BIGINT, allowNull: false },
    
                  }, { freezeTableName: true});
                  City.associate = function(models) {
                    // associations can be defined here
                     City.hasMany(models.building,{as: 'building', foreignKey: 'cityId'})
                  };
                  return City;
                };
    
  • Vivek Doshi
    Vivek Doshi over 5 years
    @John , Glad to know. Happy Coding BTW :)
  • Muhammed Aydogan
    Muhammed Aydogan almost 3 years
    Why didn't sequelize team write this to it's documentation? interesting.
  • Naeem Ahmad
    Naeem Ahmad about 2 years
    I can only run this query once after starting the server. any subsequent query throws this error "You have used the alias company in two separate associations. Aliased associations must have unique aliases." any solution?