大佬教程收集整理的这篇文章主要介绍了筛选Node.js,Express和mysql模块,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
我的数据库模块设置如下:
app.js node_modules |___db | node_modules |___MysqL
将MysqL模块设置为db模块的依赖项.
在我的db模块的index.js中,我有一些模块导出设置供应用程序访问:
/* * Connection params for database */ var MysqL = require('MysqL'); var connection = MysqL.createConnection({ host: 'localhost',user: 'user',password: 'password',database: 'database',}); var connect = connection.connect(function(err){ if(!err){ console.log("You are connected to the database."); } else{ throw err; } }); var end = connection.end(function(err){ if(!err){ console.log("MysqL connection is terminated.") } else{ throw err; } }); module.exports = { connect: connect,connection: connection,end: end,}
在我的app.js文件中,我需要我的db模块并指定一些路由.我也尝试在app.get方法中为客户端路由使用路由中间件函数(estDb):
/** * Module dependencies. */ var express = require('express'),routes = require('./routes'),clients = require('./routes/clients'),user = require('./routes/user'),http = require('http'),path = require('path'),db = require('db'); var app = express(); app.con@L_874_20@ure(function(){ app.set('port',process.env.PORT || 3000); app.set('views',__dirname + '/views'); app.set('view ENGIne','jade'); app.use(express.favicon()); app.use(express.logger('dev')); app.use(express.bodyParser()); app.use(express.methodOverride()); app.use(app.router); app.use(express.static(path.join(__dirname,'public'))); }); app.con@L_874_20@ure('development',function(){ app.use(express.errorHandler()); }); var estDb = function(req,res,next){ db.connect; db.connection.query("SELECT * FROM table",function(err,results){ if(!err){ req.results = results; } else{ throw err; } }); db.end; next(); } app.get('/',routes.indeX); app.get('/clients',estDb,clients.view); http.createServer(app).listen(app.get('port'),function(){ console.log("Express server listening on port " + app.get('port')); });
问题
我有的是,当我启动应用程序时,似乎我的db函数(我的模块导出)被调用,因为我正在获取日志:
Express server listening on port 3000 You are connected to MysqL. MysqL connection is terminated.
不是在请求url http:// localhost / clients时(我将路由定义为).正如您所看到的,它在控制台记录“Express服务器侦听端口3000”消息后立即触发db.connect()和db.end() – 这让我相信它是从自定义数据库模块触发的我正在使用.随后,当我去路由http:// localhost / clients时,我收到一个错误:
500 Error: CAnnot enqueue Query after invoking quit.
如果我从db模块中删除connection.end()函数,我可以连接到数据库并检索结果;但是,如果我重新加载页面并尝试再次加载结果,我收到一个错误:
CAnnot enqueue Handshake after already enqueuing a Handshake
我不明白为什么我启动应用程序时模块导出会被触发?我想这就是我遇到麻烦的地方.
任何建议或帮助都会很棒.
以上是大佬教程为你收集整理的筛选Node.js,Express和mysql模块全部内容,希望文章能够帮你解决筛选Node.js,Express和mysql模块所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。