Node.js inserer dans deux tables

Signaler
Messages postés
64
Date d'inscription
lundi 10 décembre 2018
Statut
Membre
Dernière intervention
30 avril 2021
-
Messages postés
64
Date d'inscription
lundi 10 décembre 2018
Statut
Membre
Dernière intervention
30 avril 2021
-
je suis nouveau dans node.js,
j'ai dans ma base de données sql 2 tables, une table appelée club et une table appelée players, ils sont connectés par une à plusieurs relations, j'ai donc créé une requête de publication dans Flutter, et à partir de ma requête, je voulez envoyer le nom du club, le prix du club pour les insérer sur la première équipe de table, et dans la même requête envoyer la liste des joueurs sélectionnés de l'équipe et faire une boucle pour les insérer dans la deuxième table des joueurs et insérez l'identifiant du club pour chaque joueur, mais je me suis rendu compte que je ne savais pas quoi faire dans Flutter ou Node.js, j'essaie de trouver la bonne syntaxe pour ce que j'ai essayé, après l'exécution, j'ai eu une erreur dans node.js qui dit

"unexpected token for" c'est clair qu'il ya des autres fautes de syntaxe ,

ce que j'ai essayé:


create:(data,callback)=>{
    pool.query(
      insert into club(userid,name,price) values(?,?,?),
   [
        data.userid,
        data.name,
        data.price,

      ],
    for(item in data.players){
`insert into players(id,firstname,lastname,position,price,appearences,goals,
        assists,cleansheets,redcards,yellowcards,image,clubid) values(?,?,?,?,?,?,?,?,?,?,?,?,?)`,

      [
        data.id,
        data.firstname,
        data.lastname,
        data.position,
        data.price,
        data.appearences,
        data.goals,
        data.assists,
        data.cleansheets,
        data.redcards,
        data.yellowcards,
        data.image,
        data.clubid,
        
      ],

   }
      (error,results,fields)=>{
        if(error){
          callback(error);
        }
        return callback(null,results);
      }
    );

 
  }
  },




des captures sur les erreurs:



ma base de données:

table club: id userid

table players: id firstname lastname position price appearences goals assists cleansheets redcards yellowcards image clubid

clubid is a foreign key of the table club i know that it should be the last inserted id but i do not know how to do the right syntax


Je suis entrain d'essayer de mettre mon code marche

2 réponses

Salut,
pas tout compris.
Une chose est sûre une seule erreur de syntaxe et le code ne fonctionnera pas.
Commencez donc par corriger celle du js.
[
        data.userid,
        data.name,
        data.price,

      ]

Rien ne vous choque? La virgule derrière data.price indique la donnée suivante et celle ci n'existe pas donc soit il manque une valeur dans le tableau soit il y a une virgule en trop.

Et bien sûr les éventuelles erreurs de SQL.
Vous pouvez simplement tester celle ci dans la console de en écrivant le SQL pour voir les erreurs éventuelles.

Ceci m'intrigue par exemple:
 values(?,?,?)

Si vous insérez les données dans l'ordre alors vous pouvez laisser vide. Si vous insérez les données des champs(colonnes) spécifiques il faut indiquer les noms des champs.

Bon j'irais pas plus loin parce que c'est à vus de faire le boulot.

Quant à ça:
"clubid is a foreign key of the table club i know that it should be the last inserted id but i do not know how to do the right syntax "

Ce n'est pas vrai tant que vous insérez les données des tables jointes, l'ordre importe peu tant qu'il y a les 2(pour 2 tables jointes, 3 pour 3tables jointes etc...).
Idem pour plusieurs données dans une seule table, tant que vous insérez les champs correctement(remplir ceux obligatoires donc) l'ordre n'a aucun intérêt.
Par convention c'est plutôt les champs identifiants(clé primaire+clé étrangères(s)) qui sont au début parce que ceci seront toujours requis et que c'est quand même plus logique de les avoir au début.
C'est plutôt à voir du côté du SQL que vous avez(l'ordre des champs) mais sinon vous devez indiquer l'ordre dans lequels vous voulez les rentrer(voir mes commentaires sur vos champs values et l'ordre indiqué).

J’espère ne pas me tromper sur votre question car je ne suis pas très connaisseur de node.js

Mais bon ça reste du JavaScript donc comme pour n'importe quel langage de programmation = pas d'erreur permise au point espace et à la virgule près.
Et sinon comme vous parlez d'insertion et de requêtes ça me semble plutôt indiquer un problème de SQL.

Par contre pas compris ceci:

" et faire une boucle pour les insérer dans la deuxième table des joueurs"
Une boucle en SQL? De quel type, je pense pas que ça existe.
Ou alors vous parlez de boucle JS pour écrire le SQL qu'il faut utiliser.
Dans ce cas testez la requête obtenue pour voir si celle ci est correcte directement dans la console SQL(accessible par phpMyAdmin avec WAMP ou easyPHP et autres serveurs locaux).
Messages postés
64
Date d'inscription
lundi 10 décembre 2018
Statut
Membre
Dernière intervention
30 avril 2021

j'ai résolu le probleme d'insertion , mais le probleme de récuperation de id inserée de la table club pour l'inserer dans la deuxieme table n'est pas résolu