我正在尝试使用mysql模块从mysql数据库中获取一些数据,然后将其写入HTML页面,但它似乎陷入了查询函数本身。 代码如下所示:
rooms = [];
var mysql = require('mysql');
var con = mysql.createConnection({
host: "localhost",
user: "MYUSERNAME",
password: "MYPASSWORD",
database: "travel"
});
con.connect(function(err) {
if (err) throw err;
con.query("SELECT * FROM rooms", function (err, result, fields) {
if (err) throw err;
var rooms = result;
console.log(rooms[9]);
});
});
console.log(rooms);
第一个console.log
正确输出结果,但第二个返回第一行中声明的空数组并首先打印。我是Javascript的新手所以我可能错过了一些非常明显的东西。提前谢谢。
答案 0 :(得分:1)
我认为你正在重新创建另一个变量,因为之前添加了“var”。没有它你试过吗?
如果它不起作用,这里是另一个可行的解决方案:
global.rooms = [];
global.rooms = result;
答案 1 :(得分:0)
var rooms = [];
var mysql = require('mysql');
var con = mysql.createConnection({
host: "localhost",
user: "MYUSERNAME",
password: "MYPASSWORD",
database: "travel"
});
con.connect(function(err) {
if (err) throw err;
con.query("SELECT * FROM rooms", function (err, result, fields) {
if (err) throw err;
rooms = result;
console.log(rooms[9]);
});
});
console.log(rooms);
你错过了将房间宣布为全局变量。
答案 2 :(得分:0)
使用回调函数的方法
rooms = [];
var mysql = require('mysql');
var con = mysql.createConnection({
host: "localhost",
user: "MYUSERNAME",
password: "MYPASSWORD",
database: "travel"
});
function query(callback) {
con.connect(function(err) {
if (err) throw err;
con.query("SELECT * FROM rooms", function (err, result, fields) {
if (err) throw err;
var rooms = result;
callback(rooms);
console.log(rooms[9]);
});
});
}
function log_it_out() {
console.log(rooms);
}
query(log_it_out);
答案 3 :(得分:0)
我认为这对您来说不再重要,因为距您问这个基本问题已经有大约一年的时间了,但是搜索其他问题的人可能会发现此信息有用,因为我遇到了同样的问题。
**} else if(req.url === "/api/labeat") {
res.writeHead(200, {"Content-Type": "application/json"});
res.end(JSON.stringify(information));**
重要 当您尝试将变量声明旁边的内容返回到网站时,使用 res.end(); 时,请确保将结果或您要使用的任何类型的信息转换为字符串或缓冲区,因为res.end()需要字符串或缓冲区。还要像我一样指定Content-Type(application / json)。