Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/467.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 节点JS中的多查询_Javascript_Mysql_Node.js_Socket.io - Fatal编程技术网

Javascript 节点JS中的多查询

Javascript 节点JS中的多查询,javascript,mysql,node.js,socket.io,Javascript,Mysql,Node.js,Socket.io,在nodejs中使用mysql模块进行多sql查询时遇到了一些问题。即使用户存在,也会创建一个新用户,因此可能存在以下问题: if (rows[0].exist == "0") { // if not exist, create it (already authentified by wordpress) 我已经尝试了没有报价,但同样的问题,不会更新,只是插入 function _databaseProcess() { var existUser = 'SELECT COUN

在nodejs中使用mysql模块进行多sql查询时遇到了一些问题。即使用户存在,也会创建一个新用户,因此可能存在以下问题:

if (rows[0].exist == "0") { // if not exist, create it (already authentified by wordpress)
我已经尝试了没有报价,但同样的问题,不会更新,只是插入

 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;
            });
        });
编辑 事实上,这里是我得到的控制台输出:

[/#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
有一些输出您可能不理解,因为我省略了代码,但我们看到的事实是,即使polette在数据库中,他也不会搜索他的UID,而是会创建一个新的UID,在我的数据库中,我会得到这个(此输出是xml导出的):


创建表“用户”(
`id`smallint(5)无符号非空自动增量,
`显示_name`varchar(255)不为空,
`uid`varchar(36)默认为空,
主键(`id`)
)ENGINE=InnoDB AUTO_INCREMENT=3默认字符集=utf8;
1.
波莱特
bcf8ebb5-04fc-45d4-8d15-5ee7ae6ec368
2.
波莱特
d6a73fc1-a650-4b03-89d5-cb96b070e876

最后,nodej似乎准备了一个请求,但即使它在我的数据库中,它也会向我发送一个空输出


因此,我在这里提出了一个新问题:

您应该学习promises和您的db访问,这段代码几乎什么都不做,下一步是回调hellYep,但作为nodejs的初学者,我想了解如何像我所做的那样修复我的数据库查询,您可以简单地尝试
console.log(rows)
而不是
console.log(“resultat:“+rows[0].exist”);
是的,得到了这个,与一个已经存在的用户:[RowDataPacket{exist:0}]嗯,那么您的查询有问题。
data.username
是否具有您期望的值?
<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>