在nodejs中编写多个sql查询
Posted
技术标签:
【中文标题】在nodejs中编写多个sql查询【英文标题】:Writing multiple sql queries in nodejs 【发布时间】:2019-07-25 03:03:11 【问题描述】:我想显示数据库中两个表的所有值,并将其显示为 console.log。如果我在 var sql 中编写一个查询并将其显示为 console.log(results) 它可以工作,但不适用于多个查询。
var express = require('express');
var app = express();
let mysql = require('mysql')
let connection = mysql.createConnection(
host: 'localhost',
user: 'root',
password: '',
database: 'pitch_perfect_db2',
multipleStatements: true
)
app.get('/',(req, res) =>
connection.connect();
var sql = 'SELECT * FROM investors?; SELECT * FROM member_info?;'
connection.query(sql, function(err, results, fields)
if (!err)
// res.send(JSON.stringify(results[0]));
// res.send(JSON.stringify(results[1]));
console.log('hey');
//console.log(results);
console.log(results[0]);
console.log(results[1]);
else
console.log('Error while performing query.');
);
connection.end();
)
//app.listen(port, () => console.log('Server Started pn port $port'));
app.listen(3002);
【问题讨论】:
请参阅post 了解可能有帮助的不同方法。 【参考方案1】:我能够让它工作,但我必须做两件事:
首先我重命名了表以删除问号,因为它总是被转换为“1”,并且表名不再与数据库中的匹配。
其次,我在connection.query() 中添加了一个数组。之后它工作得很好。
更多信息here
var express = require('express');
var app = express();
let mysql = require('mysql')
let connection = mysql.createConnection(
host: 'localhost',
user: 'root',
password: '',
database: 'pitch_perfect_db2',
multipleStatements: true
)
app.get('/',(req, res) =>
connection.connect();
var sql = 'SELECT * FROM investors; SELECT * FROM member_info;';
//var sql = 'SELECT * FROM investors;';
connection.query(sql, [1, 2], function(err, results, fields)
if (!err)
res.send(JSON.stringify(results[0]) + JSON.stringify(results[1]));
console.log('hey');
//console.log(results);
console.log(results[0]);
console.log(results[1]);
else
console.log('Error while performing query.');
console.log(err);
);
connection.end();
)
//app.listen(port, () => console.log('Server Started pn port $port'));
app.listen(3002);
【讨论】:
【参考方案2】:在节点中,您不会在 sql 语句中使用 ;
。假设investors
和member_info
表的列数相同,您将需要使用这个:
var sql = 'SELECT * FROM investors UNION ALL SELECT * FROM member_info';
或者,如果 investors
和 member_info
是不相关的表,您将需要进入 回调地狱 以获得所需的内容:
app.get('/',(req, res) =>
connection.connect();
var sql1 = 'SELECT * FROM investors';
var sql2 = 'SELECT * FROM member_info?';
connection.query(sql1, function(err, investors)
if (err) throw err; //you should use this for error handling when in a development environment
console.log(investors); //this should print
connection.query(sql2, function(err, members)
if (err) throw err;
console.log(members);
res.render('your view', investors:investors, members:members);
);
);
);
如果您决定采用后一种方法,我会敦促您重新考虑您的数据库布局。
如果您的示例中的任何一个表之间存在外键关系,您应该肯定在这些表上使用某种JOIN
语句,而不是UNION
。
【讨论】:
以上是关于在nodejs中编写多个sql查询的主要内容,如果未能解决你的问题,请参考以下文章