2016-04-14 13 views
0

mysql modülünü kullanarak nodejs'de birden çok sql sorgumla ilgili bir sorunum var. kullanıcısı mevcut olsa bile, yeni bir kullanıcı oluşturmak, bu yüzden bir sorun bu muhtemelen vardır:Düğümde birden fazla sorgu JS

if (rows[0].exist == "0") { // if not exist, create it (already authentified by wordpress) 

Zaten alıntı olmadan çalıştı, ancak aynı sorun, güncelleme olmayacak, sadece takın ettik.

[/#DIM4Opuve1Ov96igAAAB]Requete obtenu, qui est-ce ? 
Connexion à la base : id 36525 
[ RowDataPacket { exist: 0 } ] 
Première connexion de polette 
Ajout de l'user 1 
[/#DIM4Opuve1Ov96igAAAB] USER: polette => bcf8ebb5-04fc-45d4-8d15-5ee7ae6ec368 
polette from socket /#DIM4Opuve1Ov96igAAAB joined the app 
Utilisateurs connectés (1) : 
bcf8ebb5-04fc-45d4-8d15-5ee7ae6ec368 (polette) sur le socket /#DIM4Opuve1Ov96igAAAB 
polette disconnected 
[/#1DIhz2yFipo9VtuzAAAC]Requete obtenu, qui est-ce ? 
Connexion à la base : id 36525 
[ RowDataPacket { exist: 0 } ] 
Première connexion de polette 
Ajout de l'user 2 
[/#1DIhz2yFipo9VtuzAAAC] USER: polette => d6a73fc1-a650-4b03-89d5-cb96b070e876 
polette from socket /#1DIhz2yFipo9VtuzAAAC joined the app 
Utilisateurs connectés (1) : 
d6a73fc1-a650-4b03-89d5-cb96b070e876 (polette) sur le socket /#1DIhz2yFipo9VtuzAAAC 

i kodunu ihmal ettik çünkü anlamayabilir bazı çıkış yok, ama aslında biz:

function _databaseProcess() { 
     var existUser = 'SELECT COUNT(*) as exist FROM user WHERE display_name = "?"'; 
     var insertUser = 'INSERT INTO user SET ?'; 
     var getUid = 'select uid from user where display_name = "?"'; 

     pool.getConnection(function(err, db) { // Ask for a connection 
      if (err) { 
       db.release(); 
       console.log("Erreur lors de la connexion à la base"); 
       return; 
      } 

      console.log('Connexion à la base : id ' + db.threadId); 

      db.query(existUser, [data.username], function(err, rows) { // check if user exist 
       if (err) throw err; 
       console.log("resultat : " + rows[0].exist); 
       if (rows[0].exist == "0") { // if not exist, create it (already authentified by wordpress) 
        console.log('Première connexion de ' + data.username); 
        uid = uuid.v4(); 
        var value = { 
         "display_name": data.username, 
         "uid": uid 
        }; 
        db.query(insertUser, value, function(err, rows) { 
         if (err) throw err; 
         db.release(); 
         console.log("Ajout de l'user " + rows.insertId); 

         _initiateConnection(); 
        }); 
       } else { //else, retrieve the uid 
        db.query(getUid, value, function(err, rows) { 
         if (err) throw err; 
         db.release(); 
         console.log("UID de l'user : " + rows[0].uid); 
         uid = rows[0].uid; 

         _initiateConnection(); 
        }); 
       } 
      }); 

      db.on('error', function(err) { 
       console.log("Erreur dans la base de donnée"); 
       return; 
      }); 
     }); 

DÜZENLEME

Aslında, burada ben var konsol çıkışı Bakın, polen veritabanında olsa bile, UID'sini aramayacak ve yeni bir tane oluşturacak ve veritabanımda bunu alacağım (bu çıktı xml olarak verilir):

<pma_xml_export version="1.0" xmlns:pma="http://www.phpmyadmin.net/some_doc_url/"> 
    <!-- 
    - Structure schemas 
    --> 
    <pma:structure_schemas> 
     <pma:database name="node" collation="latin1_swedish_ci" charset="latin1"> 
      <pma:table name="user"> 
       CREATE TABLE `user` (
        `id` smallint(5) unsigned NOT NULL AUTO_INCREMENT, 
        `display_name` varchar(255) NOT NULL, 
        `uid` varchar(36) DEFAULT NULL, 
        PRIMARY KEY (`id`) 
       ) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8; 
      </pma:table> 
     </pma:database> 
    </pma:structure_schemas> 

    <!-- 
    - Base de données: 'node' 
    --> 
    <database name="node"> 
     <!-- Table user --> 
     <table name="user"> 
      <column name="id">1</column> 
      <column name="display_name">polette</column> 
      <column name="uid">bcf8ebb5-04fc-45d4-8d15-5ee7ae6ec368</column> 
     </table> 
     <table name="user"> 
      <column name="id">2</column> 
      <column name="display_name">polette</column> 
      <column name="uid">d6a73fc1-a650-4b03-89d5-cb96b070e876</column> 
     </table> 
    </database> 
</pma_xml_export> 
+0

Sen ve [promisify] (http://bluebirdjs.com/docs/api/promise.promisifyall.html) sizin db erişir sözleri öğrenmelidir:

Yani ben orada yeni bir soru açtım Neredeyse hiçbir şey yapmaz bu kod –

+0

Yep, bir sonraki adımda bir geri çağırma cehennem, ama nodejs bir acemi olarak, ben –

+0

yaptığım gibi benim veritabanı sorguyu düzeltmek istiyorum anlamak istiyorum Sadece 'konsol.log (satır) deneyebilirsiniz) '' console.log ("resultat:" + satır [0] .exist) yerine " – Molda

cevap

İlgili konular