Javascript 将node.js-mysql结果返回到函数
我有两个node.js文件:server.js和database.js。我希望我的socket.io在server.js中发出,数据库查询在database.js中发出。Server.js:Javascript 将node.js-mysql结果返回到函数,javascript,json,node.js,socket.io,node-mysql,Javascript,Json,Node.js,Socket.io,Node Mysql,我有两个node.js文件:server.js和database.js。我希望我的socket.io在server.js中发出,数据库查询在database.js中发出。Server.js: // init io.sockets.on('connection', function(socket) { initdb = db.initdb(); console.log(initdb) }); My database.js基本上包含以下代码: function query(quer
// init
io.sockets.on('connection', function(socket) {
initdb = db.initdb();
console.log(initdb)
});
My database.js基本上包含以下代码:
function query(queryString) {
connection = mysql.createConnection({
host: '12.23.45.67',
user: 'user',
password: 'password',
database: 'database'
});
connection.connect();
var res = connection.query(queryString, function(err, rows, fields) {
if (err) throw err;
});
connection.end();
}
// export initdb for external usage by server.js
exports.initdb = function() {
var initdb = query("SELECT * FROM columns;");
};
我的问题是希望connection.query函数中的rows对象返回到initdb函数。但是,我可以记录此对象的唯一位置是在该函数中。如何传递查询结果以便从server.js发送JSON对象?记住节点是异步的。因此,在大多数情况下,您通过回调而不是作为函数的返回值获取数据 您需要将回调链接到查询发生的位置,例如:
// in database.js
exports.initdb = function(cb) {
query("SELECT * FROM columns", cb)
}
function query(queryString, cb) {
// .. stuff omitted
var res = connection.query(queryString, function(err, rows, fields) {
connection.end();
if (err) return cb(err);
cb(null,rows);
});
// in server.js
io.sockets.on('connection', function(socket) {
db.initdb(function(err,rows) {
if (err) {
// do something with the error
} else {
console.log(rows)
}
});
});
回调函数将包含两个参数err和rows。您的server.js代码需要检查err的值并相应地执行操作,否则它会有行。记住节点是异步的。因此,在大多数情况下,您通过回调而不是作为函数的返回值获取数据 您需要将回调链接到查询发生的位置,例如:
// in database.js
exports.initdb = function(cb) {
query("SELECT * FROM columns", cb)
}
function query(queryString, cb) {
// .. stuff omitted
var res = connection.query(queryString, function(err, rows, fields) {
connection.end();
if (err) return cb(err);
cb(null,rows);
});
// in server.js
io.sockets.on('connection', function(socket) {
db.initdb(function(err,rows) {
if (err) {
// do something with the error
} else {
console.log(rows)
}
});
});
回调函数将包含两个参数err和rows。您的server.js代码需要检查err的值并相应地执行操作,否则它会有行。这是我的第一个node.js项目。没有得到这个重要的部分。非常感谢你的合作!当然可以。我们都去过那里如果你只是在学习,你可能会在我正在做的一系列电影中发现一些价值。无论你是否检查,快乐编码!这是我的第一个node.js项目。没有得到这个重要的部分。非常感谢你的合作!当然可以。我们都去过那里如果你只是在学习,你可能会在我正在做的一系列电影中发现一些价值。无论你是否检查,快乐编码!