¿Es posible filtrar una consulta por los atributos en la tabla de asociación con secuela?

Estoy tratando de filtrar mi consulta por los atributos de la tabla de unión

Tengo 2 tablas Ciudades y categorías que asocio a través de una tercera tabla CityCategory. La idea es obtener las categorías asociadas con una ciudad cuando CityCategory . year es un entero específico

Así es como especificé las asociaciones:

 module.exports = function(sequelize, DataTypes) { var CityCategory = sequelize.define('CityCategory', { year: { type: DataTypes.INTEGER, allowNull: false, validate: { notNull: true } } }, { indexes: [{ unique: true, fields: ['CityId', 'CategoryId', 'year'] }] }); return CityCategory; }; City.belongsToMany(models.Category, { through: { model: models.CityCategory } }); Category.belongsToMany(models.City, { through: { model: models.CityCategory } }); 

Esta es la consulta que estoy usando actualmente, sin éxito:

 City.find({ where: {id: req.params.id}, attributes: ['id', 'name'], include: [{ model: Category, where: {year: 2015}, attributes: ['id', 'name', 'year'] }] }) .then(function(city) { ... }); 

Desafortunadamente, no estoy seguro de cómo hacer una secuencia para usar el atributo year de CityCategory en lugar de buscar un atributo llamado ‘year’ en el modelo de categoría …

 Unhandled rejection SequelizeDatabaseError: ER_BAD_FIELD_ERROR: Unknown column 'Category.CityCategory.year' in 'where clause' 

¿Es esto posible o tendré que ir y escribir manualmente mi consulta personalizada?

¡Muchas gracias de antemano!

editar

¡He estado jugando un poco más y encontré una solución! Parece un poco desordenado, así que estoy seguro de que debe haber una mejor manera.

 City.find({ where: {id: req.params.id}, attributes: ['id', 'name'], include: [{ model: Category, where: [ '`Categories.CityCategory`.`year` = 2015' ], attributes: ['id', 'name', 'year'] }] }) .then(function(city) { ... }); 

Al consultar la tabla a través, debe usar a through.where

 include: [{ model: Category, through: { where: {year: 2015}}, attributes: ['id'] }] 

Es posible que desee agregar required: true para convertir la inclusión en una combinación interna

Para Sequelize v3, parece que la syntax está más cerca de lo que sugirió, es decir:

 include: [{ model: Category, where: {year: 2015}, attributes: ['id'] }]