Partage
  • Partager sur Facebook
  • Partager sur Twitter

Cannot add Foreing key constraint - NodeJS

    22 janvier 2020 à 15:16:17

    Bonjour,

    J'essaye de créer une base de données avec NodeJS, cependant je ne connais pas bien la syntaxe. 

    Voici le fichier JS modele de ma table :

    'use strict';
    module.exports = (sequelize, DataTypes) => {
      const Produit = sequelize.define('Produit', {
        nomProduit: DataTypes.STRING,
        fraisLivraison: DataTypes.FLOAT,
        idClient: DataTypes.INTEGER,
        idBoutique: DataTypes.INTEGER,
        idLieu: DataTypes.INTEGER
      }, {});
      Produit.associate = function(models) {
        // associations can be defined here
        models.Produit.belongsTo(models.Client, {
          foreignKey: {
            allowNull:false
          }
        })
      };
        
      Produit.associate = function(models) {
        models.Produit.belongsTo(models.Boutique, {
          foreignKey: {
            allowNull:false
          }
        })
      };
    
      Produit.associate = function(models) {
        models.Produit.belongsTo(models.Lieu, {
          foreignKey: {
            allowNull:false
          }
        })
      };
    
      Produit.associate = function(models){
        models.Produit.hasMany(models.Destination);
    
      };
      return Produit;
    };

    Et voici le fichier migration de mon fichier :

    'use strict';
    module.exports = {
      up: (queryInterface, Sequelize) => {
        return queryInterface.createTable('Produits', {
          idProduit: {
            allowNull: false,
            autoIncrement: true,
            primaryKey: true,
            type: Sequelize.INTEGER
          },
          nomProduit: {
            allowNull: false,
            type: Sequelize.STRING
          },
          fraisLivraison: {
            allowNull: false,
            type: Sequelize.FLOAT
          },
          idClient: {
            allowNull: false,
            type: Sequelize.INTEGER,
            references: {
              model:'Clients',
              key:'idClient'
            }
          },
          idBoutique: {
            allowNull: false,
            type: Sequelize.INTEGER,
            references: {
              model:'Boutiques',
              key:'idBoutique'
            }
          },
          idLieu: {
            allowNull: false,
            type: Sequelize.INTEGER,
            references: {
              model:'Destination',
              key:'idDestination'
            }
          },
          createdAt: {
            allowNull: false,
            type: Sequelize.DATE
          },
          updatedAt: {
            allowNull: false,
            type: Sequelize.DATE
          }
        });
      },
      down: (queryInterface, Sequelize) => {
        return queryInterface.dropTable('Produits');
      }
    };

    Et lorsque je fais une migration de ma table avec sequelize, ça me retourne l'erreur que j'ai indiqué dans le titre : Cannot add Foreing key constraint.

    Je suppose est dans le fichier modèle avec la fonction, mais je ne sais pas comment faire pour indiquer les clées étrangères correctement.

    Merci pour votre aide.


    • Partager sur Facebook
    • Partager sur Twitter

    Cannot add Foreing key constraint - NodeJS

    × 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.
    • Editeur
    • Markdown