Ho due modelli correlati, Catalog e ProductCategory. Quest'ultimo ha un PK composto, 'id, language_id'. Qui ci sono i modelli semplificati:Sequelize: Include.where filtering di un attributo 'parent' Model
var Catalog = sequelize.define("Catalog", {
id: {
type: DataTypes.INTEGER,
primaryKey: true,
autoIncrement: true
},
user_id: {
type: DataTypes.INTEGER,
allowNull: false
},
product_category_id: {
type: DataTypes.STRING(7)
},
language_id: {
type: DataTypes.INTEGER
},
... more stuff ...
}
var ProductCategory = sequelize.define("ProductCategory", {
id: {
type: DataTypes.STRING(7),
primaryKey: true
},
language_id: {
type: DataTypes.INTEGER,
primaryKey: true
},
... more stuff ...
}
Catalog.belongsTo(models.ProductCategory, {foreignKey: 'product_category_id'});
sto cercando di includere alcune informazioni da tavolo ProductCategory relative al Catalogo, ma solo quando le partite language_id.
In questo momento ricevo tutte le possibili corrispondenze da entrambe le tabelle. Questa è la query in questo momento:
Catalog.find({where:
{id: itemId},
include: {
model: models.ProductCategory,
where: {language_id: /* Catalog.language_id */}
}
})
C'è un modo per utilizzare un attributo dal catalogo per filtrare l'includere in cui entrambi i modelli hanno la stessa lingua?
A proposito, ho anche provato a cambiare il caluse dove, senza alcun consecuence:
where: {'ProductCategory.language_id': 'Catalog.language_id'}
Testato e funziona come un fascino, grazie per il miglioramento sul mio auto-anser. ;) –