0
mysqlモジュールを使用して、nodejs内で複数のsqlクエリに問題がありました。ユーザーが存在したとしても、それは、新しいユーザーを作成しますので、問題は、この中で、おそらくそこにある:ノード内の複数のクエリJS
if (rows[0].exist == "0") { // if not exist, create it (already authentified by wordpress)
は、私はすでに引用せずに試してみましたが、同じ問題が、更新されません、ただ挿入してきました。
[/#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
私はコードを省略してきたので、あなたが理解できないかもしれないいくつかの出力がありますが、実は我々:
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;
});
});
EDIT
は実際には、ここで私が得たコンソール出力であります参照してください、たとえpoletteがデータベースにあっても彼は自分のUIDを検索せず、新しいデータベースを作成しますが、私のデータベースではこれを取得します(この出力はXMLにエクスポートされます):
<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>
あなたが約束し、[promisify](http://bluebirdjs.com/docs/api/promise.promisifyall.html)あなたのDBのアクセスを学ばなければなりません、このコードはほとんど何もしていないコールバック地獄 –
しかし、次のステップが、nodejsの初心者として、私は私のように私のデータベースクエリを修正する方法を理解したい –
簡単に 'console.log ) 'console.log(" resultat: "+ rows [0] .exist);" – Molda