Je suis en plein apprentissage de l'ORM sequelize, et je rencontre un problème que je n'arrive pas à résoudre malgré mes recherches sur internet.
En effet, j'essaye d'associer deux modèles (Client et Installation), lorsque j'utilise la méthode "include" dans "findAll", cela me renvoie une erreur en disant que Installation n'est pas associé à Client.
//#region impots
import Client from '../Models/Client.js';
import { DataTypes} from 'sequelize';
import sequelize from '../DAL/posgresql.js';
import Installation from '../Models/Installation.js';
//#endregion
//connection to the db
sequelize;
const client = Client(sequelize, DataTypes);
const installation = Installation(sequelize, DataTypes);
sequelize.sync()
.then()
.catch(error => console.log('error :', error));
export default {
getAll : async function(req, res) {
try {
const clients = await client.findAll({include : [{as: 'Installations', model : installation}]});
res.status(200).send(clients);
} catch(err) {
console.log(err);
res.status(500).send({error : err });
}
}
};
et pour finir l'erreur :
EagerLoadingError [SequelizeEagerLoadingError]: Installation is not associated to Client!
at Function._getIncludedAssociation (D:\backend\node_modules\sequelize\lib\model.js:565:13)
at Function._validateIncludedElement (D:\backend\node_modules\sequelize\lib\model.js:502:53)
at D:\backend\node_modules\sequelize\lib\model.js:421:37
at Array.map (<anonymous>)
at Function._validateIncludedElements (D:\backend\node_modules\sequelize\lib\model.js:417:39)
at Function.findAll (D:\backend\node_modules\sequelize\lib\model.js:1103:12)
at processTicksAndRejections (node:internal/process/task_queues:96:5)
at async getAll (file:///D:/backend/src/Controller/client.js:22:27)
Si quelqu'un a une idée de comment débloquer cette situation, je suis preneur.
Il me semble que le problème vienne de ton fichier src/Controller/client.js, à la ligne 22, mais je ne suis pas certain de comment faire pour le corriger. Peut-être faut-il mettre un i majuscule (I) à model: installation, à la toute fin de ta ligne, puisque dans ton fichier Models/Client.js, c'est à un modèle Installation, et non pas installation que tu le lies. Mais je suis pas sûr que ça résole le problème.
En tou cas, la ligne suivante à la fin de l'erreur me fait dire que ce serait à la ligne 22 de ton fichier controller...
at async getAll (file:///D:/backend/src/Controller/client.js:22:27)
[SEQUELIZE] Associations
× Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
× Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.