Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/39.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 nodejs中的多个sql查询_Javascript_Node.js_Ejs - Fatal编程技术网

Javascript nodejs中的多个sql查询

Javascript nodejs中的多个sql查询,javascript,node.js,ejs,Javascript,Node.js,Ejs,我是nodejs新手。我正在使用nodejs开发一个演示应用程序。我在运行多个查询时遇到问题。我的代码如下: exports.dashboard = function(req, res){ req.getConnection(function(err,connection){ var id = req.session.userId; var queryData = "SELECT node_questions.question_name,node_questions.descrip

我是nodejs新手。我正在使用nodejs开发一个演示应用程序。我在运行多个查询时遇到问题。我的代码如下:

exports.dashboard = function(req, res){

 req.getConnection(function(err,connection){

 var id = req.session.userId;
  var queryData =  "SELECT node_questions.question_name,node_questions.description FROM node_questions LEFT JOIN node_user ON node_questions.user_id=node_user.id";
        var query = connection.query(queryData,'SELECT * FROM node_user Where id = ?',[id],function(err,rows)
        {
                console.log(rows);
               res.render('dashboard',{page_title:"Dashboard",session:req.session.userId,email:req.session.email,data:rows});
         });
    });  
};
数据库连接是:

 app.use(
        connection(mysql,{
            host: 'localhost',
            user: 'root',
            password : 'password',
            port : 3306, //port mysql
            database:'nodeDemo',
            multipleStatements:true

        },'pool') //or single

    );
为什么不使用承诺

let Promise = require('bluebird'),
    begin = []

begin.push(promise1(a,b))
begin.push(promise2(c.d))

return Promise.all(begin)
    .spread(function (resultFromQuery1, resultFromQuery2) {
        // do something with the result here
    })

你把东西混在一起了。例如,您希望您的
行是什么?它应该是第一个查询的结果集还是第二个查询的结果集?处理这个问题的一个好方法是使用async模块(确保首先通过package.json中的npm安装它)


请提供更多关于错误的信息,这是错误:“TypeError:undefined不是函数”该错误是否提供了堆栈跟踪?能否告诉我如何在nodeJs中运行多个mysql查询?未定义非函数错误并不意味着问题与运行多个查询有关,但如果没有堆栈跟踪,则很难提供帮助。你能把错误堆栈跟踪贴到你的问题上吗?嗨,Kaya Toast:我得到了错误“ReferenceError:client未定义”。基本上,我的回答只是说明了如何处理两个单独的查询并获得响应。无论如何,我现在已经定义了
客户机
。很高兴能为您提供帮助。在某个时候,进一步了解为什么
app.use
、为什么
pool
、为什么
async.series
等详细信息。祝您的项目好运:-)
var async = require('async');
var mysql      = require('mysql');

client = mysql.createConnection({
    user: 'root',
    password : 'password',
    port : 3306, //port mysql
    database:'nodeDemo',
    multipleStatements:true
});

var id = req.session.userId;

async.parallel([
    function(callback) {
        var queryData = '' +
            ' SELECT node_questions.question_name,node_questions.description' +
            ' FROM node_questions' +
            ' LEFT JOIN node_user' +
            ' ON node_questions.user_id=node_user.id';
        client.query(queryData, function (err, rows1) {
            if (err) {
                return callback(err);
            }
            return callback(null, rows1);
        });
    },
    function(callback) {
        client.query('SELECT * FROM node_user Where id = ?', id, function (err, rows2) {
            if (err) {
                return callback(err);
            }
            return callback(null, rows2);
        });
    }
], function(error, callbackResults) {
    if (error) {
        //handle error
        console.log(error);
    } else {
        console.log(callbackResults[0]); // rows1
        console.log(callbackResults[1]); // rows2
        // use this data to send back to client etc.
    }
});