Sequelize: Include.where filtering by a 'parent' Model attribute

Sequelize provides an extra operator $col for this case so you don't have to use sequelize.literal('...') (which is more a hack).

In your example the usage would look like this:

Catalog.find({where:
    {id: itemId},
    include: {
        model: models.ProductCategory, 
        where: {
          language_id: {$col: 'Catalog.language_id'}
        }
    }
})

You can try this (Especially if you are using MariaDB) -

const Sequelize = require('sequelize'); 
const op = Sequelize.Op;

Catalog.find({where:
    {id: itemId},
    include: {
        model: models.ProductCategory, 
        where: {
          language_id: {[op.col]: 'Catalog.language_id'}
        }
    }
})