Bonjour,

Je travaille avec express.js, une base de donnée MySQL Workbench, j'utilise le package sequelize.

J'ai créé mes 2 tables User, Message directement depuis Workbench, avec la synchronisation, ma base de donnée qui est connecté sur VSC ( Database extension) met tout à jour.

Le but étant de mettre en relation ces 2 tables pour que chaque message affiche l'identifiant de l'envoyeur ( l'utilisateur), pour cela j'ai rajouté une clé étrangère (foreignKey) dans MySQL Workbench , après le lancement du ERD (diagramme) la relation est bien présente. ( surtout j'ai bien rajouté la foreignKey dans la table message qui est nommé (userId pour faire référence à la colonne de la table user).
Vous pouvez le voir sur mon diagramme.

Cependant du coté Backend, dans mes models, lorsque j'effectue associate avec hasMany() et belongTo (), j'ai le message suivant :

Pourquoi les associations ne sont pas prise en compte ?
Merci pour votre aide

C:\Users\sil\Desktop\Projet\Backend\models\User.js:28
models.User.hasMany(models.Message);
^
TypeError: Cannot read properties of undefined (reading 'User')
at new associate (C:\Users\sil\Desktop\Projet\Backend\models\User.js:28:12)


Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
// Include Sequelize module.
const Sequelize = require("sequelize");
 
// Import sequelize object,
 
const sequelize = require("../config.db/db");
 
const User = sequelize.define("user", {
  userId: {
    type: Sequelize.INTEGER,
 
    autoIncrement: true,
 
    allowNull: false,
 
    primaryKey: true,
  },
 
  firstname: { type: Sequelize.STRING, allowNull: false },
 
  lastname: { type: Sequelize.STRING, allowNull: false },
 
  email: { type: Sequelize.STRING, allowNull: false, unique: true },
 
  password_key: { type: Sequelize.STRING, allowNull: false },
 
  associate: function (models) {
    models.User.hasMany(models.Message);
  },
});
 
module.exports = User;

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
// Include ORM Sequelize module.
const Sequelize = require("sequelize");
// Import sequelize object,
const sequelize = require("../config.db/db");
//*** Définition du modele User de MYSQL Workbench***//
const Message = sequelize.define("message", {
  _idmessage: {
    type: Sequelize.INTEGER,
 
    autoIncrement: true,
 
    allowNull: false,
 
    primaryKey: true,
  },
  //**********Identifiant de l'envoyeur, l'utilisateur qui générera le post **********/
  userId: {
    allowNull: false,
    type: Sequelize.INTEGER,
    references: {
      model: "Users",
      key: "userId",
    },
  },
  title: {
    type: Sequelize.STRING(100),
    allowNull: false,
  },
  description: {
    type: Sequelize.STRING(100),
    allowNull: false,
  },
  imageUrl: {
    type: Sequelize.STRING(100),
    allowNull: true,
  },
  associate: function (models) {
    models.Message.belongTo(models.User, {
      foreignKey: {
        allowNull: false,
      },
    });
  },
});
 
module.exports = Message;

Nom : Simulation ERD.png
Affichages : 137
Taille : 81,9 Ko