Javascript 为什么服务器不访问连接变量?
我正在尝试使用Node.js restify框架从数据库检索数据。服务器运行正常,但访问时出现以下错误:Javascript 为什么服务器不访问连接变量?,javascript,node.js,Javascript,Node.js,我正在尝试使用Node.js restify框架从数据库检索数据。服务器运行正常,但访问时出现以下错误: { "code": "InternalError", "message": "connectionPool is not defined" } 这是我的密码: server.js require('./app/core/routes.js'); var restify=require('restify'); var fs=require('fs'); var controller
{
"code": "InternalError",
"message": "connectionPool is not defined"
}
这是我的密码:
server.js
require('./app/core/routes.js');
var restify=require('restify');
var fs=require('fs');
var controllers = {};
controllers_path = process.cwd() + '/app/controllers';
fs.readdirSync(controllers_path).forEach(function (file) {
if (file.indexOf('.js') != -1) {
controllers[file.split('.')[0]] = require(controllers_path + '/' + file);
}
});
var server=restify.createServer();
server.get('/get', controllers.article.printHello);
server.listen(8081, function (err) {
if (err)
console.error(err);
else
console.log('App is ready at : ' + 8081);
});
var something2=require('../core/connection.js');
something2.something();
exports.printHello= function(req, res, next){
connectionPool.getConnection(function (err, connection) {
if (err) {
res.send({
Error: err,
Message: "Can't connect Database."
});
} else {
//queries
connection.query("SELECT * FROM book", function (err, rows, fields) {
res.send({
json: rows
});
});
}
});
};
var mysql = require('mysql');
exports.something = function () {
var connectionPool = mysql.createPool({
host: 'localhost',
user: 'root',
password: '',
database: 'books'
});
}
var mysql = require('mysql');
exports.something = function () {
var connectionPool = mysql.createPool({
host: 'localhost',
user: 'root',
password: '',
database: 'books'
});
return connectionPool; // notice here
}
var something2=require('../core/connection.js');
var connectionPool = something2.something(); //notice here
exports.printHello= function(req, res, next){
connectionPool.getConnection(function (err, connection) {
if (err) {
res.send({
Error: err,
Message: "Can't connect Database."
});
} else {
//queries
connection.query("SELECT * FROM book", function (err, rows, fields) {
res.send({
json: rows
});
});
}
});
};
routes.js
require('./app/core/routes.js');
var restify=require('restify');
var fs=require('fs');
var controllers = {};
controllers_path = process.cwd() + '/app/controllers';
fs.readdirSync(controllers_path).forEach(function (file) {
if (file.indexOf('.js') != -1) {
controllers[file.split('.')[0]] = require(controllers_path + '/' + file);
}
});
var server=restify.createServer();
server.get('/get', controllers.article.printHello);
server.listen(8081, function (err) {
if (err)
console.error(err);
else
console.log('App is ready at : ' + 8081);
});
var something2=require('../core/connection.js');
something2.something();
exports.printHello= function(req, res, next){
connectionPool.getConnection(function (err, connection) {
if (err) {
res.send({
Error: err,
Message: "Can't connect Database."
});
} else {
//queries
connection.query("SELECT * FROM book", function (err, rows, fields) {
res.send({
json: rows
});
});
}
});
};
var mysql = require('mysql');
exports.something = function () {
var connectionPool = mysql.createPool({
host: 'localhost',
user: 'root',
password: '',
database: 'books'
});
}
var mysql = require('mysql');
exports.something = function () {
var connectionPool = mysql.createPool({
host: 'localhost',
user: 'root',
password: '',
database: 'books'
});
return connectionPool; // notice here
}
var something2=require('../core/connection.js');
var connectionPool = something2.something(); //notice here
exports.printHello= function(req, res, next){
connectionPool.getConnection(function (err, connection) {
if (err) {
res.send({
Error: err,
Message: "Can't connect Database."
});
} else {
//queries
connection.query("SELECT * FROM book", function (err, rows, fields) {
res.send({
json: rows
});
});
}
});
};
article.js
require('./app/core/routes.js');
var restify=require('restify');
var fs=require('fs');
var controllers = {};
controllers_path = process.cwd() + '/app/controllers';
fs.readdirSync(controllers_path).forEach(function (file) {
if (file.indexOf('.js') != -1) {
controllers[file.split('.')[0]] = require(controllers_path + '/' + file);
}
});
var server=restify.createServer();
server.get('/get', controllers.article.printHello);
server.listen(8081, function (err) {
if (err)
console.error(err);
else
console.log('App is ready at : ' + 8081);
});
var something2=require('../core/connection.js');
something2.something();
exports.printHello= function(req, res, next){
connectionPool.getConnection(function (err, connection) {
if (err) {
res.send({
Error: err,
Message: "Can't connect Database."
});
} else {
//queries
connection.query("SELECT * FROM book", function (err, rows, fields) {
res.send({
json: rows
});
});
}
});
};
var mysql = require('mysql');
exports.something = function () {
var connectionPool = mysql.createPool({
host: 'localhost',
user: 'root',
password: '',
database: 'books'
});
}
var mysql = require('mysql');
exports.something = function () {
var connectionPool = mysql.createPool({
host: 'localhost',
user: 'root',
password: '',
database: 'books'
});
return connectionPool; // notice here
}
var something2=require('../core/connection.js');
var connectionPool = something2.something(); //notice here
exports.printHello= function(req, res, next){
connectionPool.getConnection(function (err, connection) {
if (err) {
res.send({
Error: err,
Message: "Can't connect Database."
});
} else {
//queries
connection.query("SELECT * FROM book", function (err, rows, fields) {
res.send({
json: rows
});
});
}
});
};
connection.js
require('./app/core/routes.js');
var restify=require('restify');
var fs=require('fs');
var controllers = {};
controllers_path = process.cwd() + '/app/controllers';
fs.readdirSync(controllers_path).forEach(function (file) {
if (file.indexOf('.js') != -1) {
controllers[file.split('.')[0]] = require(controllers_path + '/' + file);
}
});
var server=restify.createServer();
server.get('/get', controllers.article.printHello);
server.listen(8081, function (err) {
if (err)
console.error(err);
else
console.log('App is ready at : ' + 8081);
});
var something2=require('../core/connection.js');
something2.something();
exports.printHello= function(req, res, next){
connectionPool.getConnection(function (err, connection) {
if (err) {
res.send({
Error: err,
Message: "Can't connect Database."
});
} else {
//queries
connection.query("SELECT * FROM book", function (err, rows, fields) {
res.send({
json: rows
});
});
}
});
};
var mysql = require('mysql');
exports.something = function () {
var connectionPool = mysql.createPool({
host: 'localhost',
user: 'root',
password: '',
database: 'books'
});
}
var mysql = require('mysql');
exports.something = function () {
var connectionPool = mysql.createPool({
host: 'localhost',
user: 'root',
password: '',
database: 'books'
});
return connectionPool; // notice here
}
var something2=require('../core/connection.js');
var connectionPool = something2.something(); //notice here
exports.printHello= function(req, res, next){
connectionPool.getConnection(function (err, connection) {
if (err) {
res.send({
Error: err,
Message: "Can't connect Database."
});
} else {
//queries
connection.query("SELECT * FROM book", function (err, rows, fields) {
res.send({
json: rows
});
});
}
});
};
您必须在
connection.js
的函数中返回变量connectionPool
connection.js
require('./app/core/routes.js');
var restify=require('restify');
var fs=require('fs');
var controllers = {};
controllers_path = process.cwd() + '/app/controllers';
fs.readdirSync(controllers_path).forEach(function (file) {
if (file.indexOf('.js') != -1) {
controllers[file.split('.')[0]] = require(controllers_path + '/' + file);
}
});
var server=restify.createServer();
server.get('/get', controllers.article.printHello);
server.listen(8081, function (err) {
if (err)
console.error(err);
else
console.log('App is ready at : ' + 8081);
});
var something2=require('../core/connection.js');
something2.something();
exports.printHello= function(req, res, next){
connectionPool.getConnection(function (err, connection) {
if (err) {
res.send({
Error: err,
Message: "Can't connect Database."
});
} else {
//queries
connection.query("SELECT * FROM book", function (err, rows, fields) {
res.send({
json: rows
});
});
}
});
};
var mysql = require('mysql');
exports.something = function () {
var connectionPool = mysql.createPool({
host: 'localhost',
user: 'root',
password: '',
database: 'books'
});
}
var mysql = require('mysql');
exports.something = function () {
var connectionPool = mysql.createPool({
host: 'localhost',
user: 'root',
password: '',
database: 'books'
});
return connectionPool; // notice here
}
var something2=require('../core/connection.js');
var connectionPool = something2.something(); //notice here
exports.printHello= function(req, res, next){
connectionPool.getConnection(function (err, connection) {
if (err) {
res.send({
Error: err,
Message: "Can't connect Database."
});
} else {
//queries
connection.query("SELECT * FROM book", function (err, rows, fields) {
res.send({
json: rows
});
});
}
});
};
article.js
require('./app/core/routes.js');
var restify=require('restify');
var fs=require('fs');
var controllers = {};
controllers_path = process.cwd() + '/app/controllers';
fs.readdirSync(controllers_path).forEach(function (file) {
if (file.indexOf('.js') != -1) {
controllers[file.split('.')[0]] = require(controllers_path + '/' + file);
}
});
var server=restify.createServer();
server.get('/get', controllers.article.printHello);
server.listen(8081, function (err) {
if (err)
console.error(err);
else
console.log('App is ready at : ' + 8081);
});
var something2=require('../core/connection.js');
something2.something();
exports.printHello= function(req, res, next){
connectionPool.getConnection(function (err, connection) {
if (err) {
res.send({
Error: err,
Message: "Can't connect Database."
});
} else {
//queries
connection.query("SELECT * FROM book", function (err, rows, fields) {
res.send({
json: rows
});
});
}
});
};
var mysql = require('mysql');
exports.something = function () {
var connectionPool = mysql.createPool({
host: 'localhost',
user: 'root',
password: '',
database: 'books'
});
}
var mysql = require('mysql');
exports.something = function () {
var connectionPool = mysql.createPool({
host: 'localhost',
user: 'root',
password: '',
database: 'books'
});
return connectionPool; // notice here
}
var something2=require('../core/connection.js');
var connectionPool = something2.something(); //notice here
exports.printHello= function(req, res, next){
connectionPool.getConnection(function (err, connection) {
if (err) {
res.send({
Error: err,
Message: "Can't connect Database."
});
} else {
//queries
connection.query("SELECT * FROM book", function (err, rows, fields) {
res.send({
json: rows
});
});
}
});
};
在connection.js文件中,导出池
var mysql = require('mysql');
exports.connectionPool = function() {
return mysql.createPool({
host: 'localhost',
user: 'root',
password: '',
database: 'books'
});
}
然后在article.js文件中使用它
var conn = require('../core/connection.js');
var pool = conn.connectionPool();
exports.printHello = function(req, res, next){
pool.getConnection(function (err, connection) {
if (err) { ...
错误似乎是正确的,connectionPool
没有定义,它是在不同的文件中定义的,但这没有多大帮助?您能告诉我如何修复它吗?控制台还说了什么吗?我不想在同一个文件中写连接代码。我想“包括”它。CMD控制台说:“服务器正在运行”。Chrome的控制台:加载资源失败:服务器响应状态为500(内部服务器错误),我会尝试告诉你。你确定可以吗?我得到的错误“conn.connectionPool()`不是函数。您是对的,它是createPool
返回的任何内容。把它包装在函数中,现在试试。你能回答这个问题吗@Vikas Kumar我一开始就给了你正确的答案非常感谢你。我应该这么想。很高兴这有帮助:)你知道restify和mysql吗?也许我可以帮你,你的问题是什么?