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