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

NodeJS Discussion :

[NodeJS/MySQL] Insert dans plusieurs tables en une requête


Sujet :

NodeJS

  1. #1
    Candidat au Club
    Femme Profil pro
    Développeur Web
    Inscrit en
    Janvier 2018
    Messages
    1
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 28
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Janvier 2018
    Messages : 1
    Points : 3
    Points
    3
    Par défaut [NodeJS/MySQL] Insert dans plusieurs tables en une requête
    Bonjour, J'ai commencé mon API et je suis bloqué sur le fait de pouvoir insérez plusieurs données dans plusieurs tables differentes dans une seule requête, en mysql c'est possible du coup j'ai besoin d'aide pour pouvoir avancé .

    Code :
    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
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    var http = require("http");
    var express = require('express');
    var app = express();
    var mysql      = require('mysql');
    var bodyParser = require('body-parser');
     
    var PHPUnserialize = require('php-unserialize');
    const Serialize = require('php-serialize');
     
    var connection = mysql.createConnection({
      host     : 'localhost',
      user     : 'root',
      password : 'root',
      database : 'restapi',
      port     : '8889'
    });
     
     
    connection.connect(function(error) {
      if (error) throw error
      console.log('\nCongrats MySQL Server success connect')
    })
     
    app.use(bodyParser.json());       // to support JSON-encoded bodies
    app.use(bodyParser.urlencoded({     // to support URL-encoded bodies
      extended: true
    }));
     
    var server = app.listen(4000, "127.0.0.1", function () {
     
      var host = server.address().address
      var port = server.address().port
     
      console.log("Server listening at http://%s:%s", host, port)
     
    });
     
    //GET Domains
    app.get('/api/domains.json', function (req, res) {
      connection.query('select id, name, created_at from domain', function (error, results, fields) {
        if (error) throw error;
        var domain = results[0];
        if (domain == undefined) {
          res.status(404);
          res.send({
            code: 404,
            message: "Not found"
          });
        } else {
          res.send({
            code: 200,
            message: 'success',
            datas: results
          });
        }
      });
    });
     
    //Get Domain By ID
    app.get('/api/domain/:id.json', function(req, res) {
      var domain_id = req.params.id;
      var sql1 = 'SELECT * FROM domain WHERE id = "' + domain_id + '"';
     
      connection.query(sql1, function(error, data) {
        if (error) throw error;
        var domain = data[0];
        if (domain == undefined) {
          res.status(404);
          return res.send({
            code: 404,
            message: "Not found"
          });
        }
        connection.query('SELECT us.username, us.id FROM user AS us WHERE us.id ="' + domain.user_id + '"', function(error, data1) {
          if (error) throw error;
     
          domain["user_id"] = domain["user"];
          domain["creator"] = data1[0];
     
          connection.query('SELECT * FROM lang', function(error, result) {
            domain["lang"] = result;
     
            res.send({
              code: 200,
              message: 'success',
              datas: domain
            });
          });
        });
      });
    });
     
    // POST Step 4
    app.post('/api/domain/:id/translation.json', function(req, res) {
      var domain_id = req.params.id;
      var insertQuery = mysql.format("INSERT INTO translation (`key`, `domain_id`) VALUES (?,?);", [req.body.key, domain_id]);
      var insertQuery2 = mysql.format("INSERT INTO translation_to_lang (`lang_id`, `value`) VALUES (?,?);", [req.body.lang_id, req.body.value]);
      connection.query(insertQuery, function(error, result) {
        if (error) {
          return res.status(400).send({
            code: 400,
            message: 'Bad Request'
          });
     
        }
        connection.query(insertQuery, function(error, result) {
     
          if (error) {
            return res.status(400).send({
              code: 400,
              message: 'Bad Request'
            });
          }
     
        });
        console.log(result);
        var selectQuery = mysql.format("SELECT * FROM translation WHERE id = ?;", result.insertId);
        connection.query(selectQuery, function(error, data_insert) {
          setTimeout(function () {
            res.send({
              code: 201,
              message: 'success',
              datas: data_insert
            });
          }, 1000);
     
        });
      });})
     
      app.all('/*', function(req, res, next) {
        // CORS headers
        res.header("Access-Control-Allow-Origin", "*"); // restrict it to the required domain
        res.header('Access-Control-Allow-Methods', 'GET,PUT,POST,DELETE,OPTIONS');
        // Set custom headers for CORS
        res.header('Access-Control-Allow-Headers', 'Content-type,Accept,X-Access-Token,X-Key');
        if (req.method == 'OPTIONS') {
          res.status(200).end();
        } else {
          res.status(404);
          res.send({
            code: 404,
            message: "Not found"
          });
        }
      });
    Au niveau de la requête post je viens de la modifié afin d'être plus compréhensible, les 2 requêtes INSERT INTO je voudrai simplement en fire une seule mais qui contient les 2. ça m'aiderai vachement après si y'au d'autres solution à ce problème je suis preneur.

  2. #2
    Membre chevronné

    Homme Profil pro
    Ingénieur Hospitalier
    Inscrit en
    Juillet 2004
    Messages
    993
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur Hospitalier
    Secteur : Santé

    Informations forums :
    Inscription : Juillet 2004
    Messages : 993
    Points : 1 768
    Points
    1 768
    Billets dans le blog
    1
    Par défaut
    Soit tu fait une boucle à essayer si ça marche ou alors tu te penche sur le packet https://www.npmjs.com/package/mysql-insert-multiple qui fait le boulot avec un tableau json.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Insertion dans plusieurs table avec un index commun
    Par irongomme dans le forum Requêtes
    Réponses: 3
    Dernier message: 12/10/2007, 11h41
  2. Insertion dans plusieurs tables en meme temps
    Par weed dans le forum Requêtes
    Réponses: 5
    Dernier message: 04/07/2007, 11h13
  3. [SQL] Insertion dans plusieurs tables
    Par fadex dans le forum PHP & Base de données
    Réponses: 1
    Dernier message: 15/02/2007, 11h47
  4. Insertion dans plusieurs tables : Transaction ?
    Par Invité dans le forum Requêtes
    Réponses: 2
    Dernier message: 05/07/2006, 18h25
  5. Réponses: 4
    Dernier message: 08/06/2006, 20h06

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