我尝试使用 connection.js 文件中的connection
并使用{{1}在不同的文件 webFrontend.js 中使用它对象。现在我在运行服务器上得到的是:
exports
这意味着{
"Result": "undefinedThis is result"
}
未定义。为什么会这样?如果connection
在同一个( webFrontend.js )文件中创建,connection
工作正常,但问题是我在<{1}}中使用getConnection
相同的导出函数strong> connection.js 因此getConnection
未定义错误:
以下是2个必要的文件(路径文件没有问题),它解释了我在做什么:
connection.js
connection
webFrontend.js
var mysql = require('mysql');
exports.connExport = function () {
var connectionPool = mysql.createPool({
host: 'localhost',
user: 'root',
password: '',
database: 'rockcity_followme'
});
if(connectionPool) {
connectionPool.getConnection(function (err, connection) {
if (err) {
return err;
} else {
return connection;
}
});
}else{
var abc="return error";
return abc;
}
}
答案 0 :(得分:0)
不需要.js
文件扩展名,它会自动为您添加。
以下代码使用标准的错误优先回调
<强> webFrontend.js 强>
var connection = require('../Routes/connection');
exports.getIndivRecords = function(req, res, next){
// connection takes a standard error-first callback
connection(function(err, conn){
if (err) {
// Handle the error returned
console.log(err);
}
// The database connection is available here as conn
console.log( "Connection:" + conn);
// presumably you want to do something here
// before sending the response
res.send({
Result: conn + "This is result"
});
});
return next();
};
<强> connection.js 强>
var mySQL = require('mysql');
var connectionPool = mySQL.createPool({
host: 'localhost',
user: 'root',
password: '',
database: 'rockcity_followme'
});
var getConnection = function (cb) {
connectionPool.getConnection(function (err, connection) {
// pass the error to the callback
if (err) {
return cb(err);
}
cb(null, connection);
});
};
module.exports = getConnection;
答案 1 :(得分:0)
首先,@ Dan Nagle不需要.js
第二,您正在获取连接undefinded
,因为该方法仍未返回结果。
使用promise调用Connection.js方法
您的节点是单线程异步执行, 他等待方法返回结果
1)你的javascript问题是那个
var connection=connObj.connExport();
创建阶段connection
中的由javascript定义为undefined和as
connObj.connExport();
仍未回复
它执行了这个函数,其中连接未定义
exports.getIndivRecords= function(req, res, next){
res.send({
Result: connection+"This is result"
});
使用承诺首先阅读此内容,以便您可以了解有关承诺和回调的内容,如果您无法解决而不是评论我将使用它。但首先您尝试.Thanku
Understanding promises in node.js
好的尝试我在这里使用了承诺
var connObj = require('../Routes/connection');
connObj.connExport().then(
function (connection) {
exports.getIndivRecords = function (req, res, next) {
res.send({
Result: connection + "This is result"
});
return next();
};
}).catch(function (err) {
res.status(400).send(err);
return;
});
var mysql = require('mysql');
exports.connExport = function () {
return new Promise(function (fulfill, reject) {
var connectionPool = mysql.createPool({
host: 'localhost',
user: 'root',
password: '',
database: 'rockcity_followme'
});
if (connectionPool) {
connectionPool.getConnection(function (err, connection) {
if (err) {
return reject(err);
} else {
return fulfill(connection);
}
});
} else {
var abc = "return error";
return reject(abc);
}
});
}