Association Sequelize

Par agencep, il y a 7 ans


Javascript NodeJS

Bonjour,

Je débute avec nodeJS, Express et Sequelize, je travail sur une BDD MySQL (ancienne) et qui ne respecte aucune norme (Ce n'est pas moi qui l'ai faite :) ) je rencontre un soucis avec les associations hasMany et belongsTo

/models/article.js

'use strict'; module.exports = (sequelize, DataTypes) => { const article = sequelize.define('article', { id_article: DataTypes.INTEGER, label_article: DataTypes.STRING, cat_article: DataTypes.INTEGER, scat_article: DataTypes.INTEGER, codebarre_article: DataTypes.STRING, prix_ttc_article: DataTypes.STRING, prix_public_article: DataTypes.STRING, photo_article: DataTypes.STRING, pcb_article: DataTypes.STRING, dispo_article: DataTypes.INTEGER, minstock_article: DataTypes.INTEGER, nbrpoints_fid_article: DataTypes.INTEGER, etat_article: DataTypes.BOOLEAN }, {}); article.associate = function (models) { models.article.belongsTo(models.categorie, { foreignKey: 'id_cat' }) // associations can be defined here }; return article; };

/models/categorie.js

'use strict'; module.exports = (sequelize, DataTypes) => { const article = sequelize.define('article', { id_article: DataTypes.INTEGER, label_article: DataTypes.STRING, cat_article: DataTypes.INTEGER, scat_article: DataTypes.INTEGER, codebarre_article: DataTypes.STRING, prix_ttc_article: DataTypes.STRING, prix_public_article: DataTypes.STRING, photo_article: DataTypes.STRING, pcb_article: DataTypes.STRING, dispo_article: DataTypes.INTEGER, minstock_article: DataTypes.INTEGER, nbrpoints_fid_article: DataTypes.INTEGER, etat_article: DataTypes.BOOLEAN }, {}); article.associate = function (models) { models.article.belongsTo(models.categorie, { foreignKey: 'cat_article' }) // associations can be defined here }; return article; };

/routes/categoriesCtrl.js

// Imports var models = require('../models'); // Routes module.exports = { listCategories: function (req, res) { models.categorie.findAll({ attributes: ['label_cat'], include: [{ model: models.article, attributes: [ 'label_article' ] }], }).then(function (cats) { if (cats) { res.status(200).json(cats) } else { res.status(404).json({ "eeror": "no cats found" }) } }).catch(function (err) { console.log(err) res.status(500).send({ "error": 'request mysql invalid' }) }) } }

Voici le résultat obtenu qui est faut évidement:

sql: 'SELECT `categorie`.`id`, `categorie`.`label_cat`, `articles`.`id` ' + 'AS `articles.id`, `articles`.`label_article` AS ' + '`articles.label_article` FROM `categories` AS `categorie` LEFT ' + 'OUTER JOIN `articles` AS `articles` ON `categorie`.`id` = ' + '`articles`.`cat_article`;'

Au faite, j'ai besoin des articles qui appartiennent à la catégorie (hasMany)

Aucune réponse