IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

MySQL Discussion :

Requête relationnelle avec sequelize


Sujet :

MySQL

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Futur Membre du Club
    Homme Profil pro
    etudiant devellopeur
    Inscrit en
    Janvier 2021
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : etudiant devellopeur

    Informations forums :
    Inscription : Janvier 2021
    Messages : 3
    Par défaut Requête relationnelle avec sequelize
    bonjour, j'essaie de faire une requête avec postman, et j'obtient ce message :
    Cannot add or update a child row: a foreign key constraint fails (`testdb`.`forums`, CONSTRAINT `forums_ibfk_1` FOREIGN KEY (`id`) REFERENCES `users` (`id`) ON UPDATE CASCADE)
    mes bases sont liées
    Code JavaScript : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    db.forum.hasMany(db.response, {as: 'responsesSubject'});
    db.response.belongsTo(db.forum, {
      foreignKey: 'id', as: 'responseSubject'
    })
    ma requete est
    Code JSON : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    {
        "title":"test2",
       "texte":"blablabla",
       "createdAt":"2020.01.21",
       "updatedAt":"2021.01.20"
     
    }
    si je rajoute un "userId":"1", j'obtient juste un error 0, je précise que dans ma base users, il y a bien une entrée avec un id 1.
    Comme vous pouvez le voir je suis débutant, merci d'avance de votre aide.

  2. #2
    Modérateur
    Avatar de escartefigue
    Homme Profil pro
    bourreau
    Inscrit en
    Mars 2010
    Messages
    10 617
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loir et Cher (Centre)

    Informations professionnelles :
    Activité : bourreau
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2010
    Messages : 10 617
    Billets dans le blog
    10
    Par défaut
    Bonjour,

    Le message d'erreur signifie que vous ne pouvez pas insérer ou modifier de valeur pour la colonne 'id' de la table 'forum' si cette même valeur n'existe pas dans la colonne 'id' de la table 'user'.
    C'est ce qu'on appelle une contrainte d'intégrité référentielle (vérification de la cohérence des identifiants entre les différentes tables).
    Il faut donc ajouter dans l'ordre INSERT ou UPDATE la colonne 'id' et sa valeur en s'assurant que cette valeur existe dans 'user'.

    Pour des réponses plus détaillées, il faut fournir le code SQL (ordres SELECT, UPDATE, INSERT...) et non pas le code du langage de programmation

  3. #3
    Futur Membre du Club
    Homme Profil pro
    etudiant devellopeur
    Inscrit en
    Janvier 2021
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : etudiant devellopeur

    Informations forums :
    Inscription : Janvier 2021
    Messages : 3
    Par défaut
    voici les deux modèles que j'ai créé, les id sont autoincrementés:
    Code JavaScript : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    module.exports = (sequelize, Sequelize) => {
        const Forum = sequelize.define("forum", {
          title: {
            type: Sequelize.STRING(45)
          },
          texte: {
            type: Sequelize.TEXT('medium')
          },
     
        });
     
        return Forum;
      };
    Code JavaScript : 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
    module.exports = (sequelize, Sequelize) => {
        const User = sequelize.define("user", {
          usename: {
            type: Sequelize.STRING(16)
          },
            email: {
            type: Sequelize.STRING(255)
          },
          password: {
            type: Sequelize.STRING(255)
          },
          role: {
            type: Sequelize.STRING(45)
          },  
          updatedAt: {
            type: Sequelize.DATE(6)
          }   
        });
     
        return User;
      };
    Elles sont donc lies par le code situé dans le message du dessus, et ensuite j'enregistre des entrées dans la base avec
    Code JavaScript : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    exports.createSubjet = (req, res, next) => {
      console.log(req.body)
      const subjectObject = req.body
        const subject = new Forum({
        ...subjectObject
      })
      subject.save() 
        .then(() => res.status(201).json({ message: 'sujet enregistré' }))
        .catch(error => res.status(400).json({ error }))
    }

Discussions similaires

  1. Problème pour générer ma requête relationnelle SQL avec TopLink
    Par Kcintim dans le forum Persistance des données
    Réponses: 0
    Dernier message: 07/07/2011, 10h36
  2. Requète multi-tables relationnelles avec jointure
    Par alextva dans le forum Requêtes
    Réponses: 2
    Dernier message: 03/11/2009, 09h43
  3. requête SQL avec paramètre en vb avec base de donnée SQL srv
    Par dialydany dans le forum VB 6 et antérieur
    Réponses: 5
    Dernier message: 01/02/2005, 10h33
  4. [Requête] Problème avec fonction "DATE_FORMAT()"
    Par sekiryou dans le forum Requêtes
    Réponses: 4
    Dernier message: 11/01/2005, 21h52
  5. PB requète SQL avec Interbase
    Par missllyss dans le forum InterBase
    Réponses: 2
    Dernier message: 15/07/2003, 11h37

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo