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)