Sequelize: Inclure.où le filtrage par "parent" attribut du Modèle
J'ai deux Modèles liés, Catalogue et ProductCategory. Ce dernier a composé PK, 'id, language_id'.
Ici, ce sont les modèles simplifiés:
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'});
J'essaie d'inclure certaines informations ProductCategory tableau sur Catalogue, mais UNIQUEMENT lorsque le language_id matchs.
Pour le moment, je reçois toutes les correspondances possibles à partir des deux tables.
C'est la requête dès maintenant:
Catalog.find({where:
{id: itemId},
include: {
model: models.ProductCategory,
where: {language_id: /* Catalog.language_id */}
}
})
Est-il un moyen d'utiliser un attribut à partir du Catalogue de filtrer les inclure, lorsque les deux modèles ont la même langue?
Par ailleurs, j'ai aussi essayé de changer les où caluse, sans consecuence:
where: {'ProductCategory.language_id': 'Catalog.language_id'}
where: {'$ProductCategory.language_id$': 'Catalog.language_id'}
c'est probablement ce qui pourrait avoir travaillé tropOriginalL'auteur Sandokan El Cojo | 2015-05-05
Vous devez vous connecter pour publier un commentaire.
Sequelize fournit un opérateur supplémentaire
$col
pour ce cas si vous n'avez pas à utilisersequelize.literal('...')
(qui est plus un hack).Dans votre exemple, l'utilisation devrait ressembler à ceci:
cela ne renvoie [Object Object] pour moi
N'oubliez pas d'inclure const Sequelize = require('sequelize'); const Op = Sequelize.Op; et vous pouvez [Op. col] au lieu de $col qu'il fixe pour moi
OriginalL'auteur Frederik Kammer
Cela semble ce faire l'affaire:
sequelize.literal('Sale.debt') makes this weird thing: ``Payments
.quantity
=val
= \'Vente.la dette\"`Le remplacement de l'intérieur où Catalogue.trouver query j'ai posté. Si vous partagez ce que vous essayez de faire, je pourrais être en mesure de vous aider. La sortie est bizarre en effet, mais il fonctionne.
OriginalL'auteur Sandokan El Cojo