Mi tabla de productos
const Product = sequelize.define('products', { id: { type: Sequelize.STRING(12), allowNull: false, primaryKey: true, }, name: { type: Sequelize.STRING(100), allowNull: false, unique: true, }, brand: { type: Sequelize.STRING(40), allowNull: false, }, instock: { type: Sequelize.INTEGER, defaultValue: 0, allowNull: false, }, mrp: { type: Sequelize.DECIMAL, defaultValue: 0.0, allowNull: false, }, price: { type: Sequelize.DECIMAL, defaultValue: 0.0, }, createdAt: Sequelize.DATE, updatedAt: Sequelize.DATE, }); Product.belongsTo(Category, { foreignKey: 'category_id', as: 'categorys', });Aquí la categoría es una clave foránea. Quiero buscar con el nombre de la categoría. ¿Necesito buscar primero la categoría y usar la identificación para buscar productos?
Definitivamente puede buscar por campos en un modelo asociado, solo use la opción where dentro include :
const products = await Products.findAll({ include: [{ model: Category, as: 'categorys', required: true, where: { name: categoryName } }] }) Si ya tiene una identificación de categoría, busque mejor los productos por ella, de esa manera no necesitará usar la opción de include en absoluto.