初学者:ejs+express怎么从数据库获取数据并输出至网页?

我是看教程学习的,做一个简易评论区,但教程中只说了如何提交数据,但没说如何获取。现在一头雾水。
流程应该是:a.启动(app.js)-->b.查询(bbs_a.js)-->c.路由(routes/bbs.js)-->d.显示(views/bbs.ejs)
但是不知道如何具体操作,对这几个步骤之间的关系也不甚清楚,网上的教程都是含糊带过,有朋友能讲解一下吗?非常感谢!
这是我写的代码更新bbs_a.js,旧的是我单独摘出来的read,实际上有save和read
app.js
varexpress=require('express');
varpath=require('path');
varfavicon=require('serve-favicon');
varlogger=require('morgan');
varcookieParser=require('cookie-parser');
varbodyParser=require('body-parser');
varsession=require('express-session');
varroutes=require('./routes/index');
varbbs=require('./routes/bbs');
varapp=express();
//viewenginesetup
app.set('views',path.join(__dirname,'views'));
app.set('viewengine','ejs');
//uncommentafterplacingyourfaviconin/public
//app.use(favicon(__dirname+'/public/favicon.ico'));
app.use(logger('dev'));
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({extended:false}));
app.use(cookieParser());
app.use(express.static(path.join(__dirname,'public')));
app.use('/',routes);
app.use('/bbs',bbs);
app.listen(8000);
//catch404andforwardtoerrorhandler
app.use(function(req,res,next){
varerr=newError('NotFound');
err.status=404;
next(err);
});
//errorhandlers
//developmenterrorhandler
//willprintstacktrace
if(app.get('env')==='development'){
app.use(function(err,req,res,next){
res.status(err.status||500);
res.render('error',{
message:err.message,
error:err
});
});
}
//productionerrorhandler
//nostacktracesleakedtouser
app.use(function(err,req,res,next){
res.status(err.status||500);
res.render('error',{
message:err.message,
error:{}
});
});
module.exports=app;
在这里,我把存储数据和读取数据放在一起。但数据库操作很奇怪……不知道怎么操作才合理
bbs_a.js
varmysql=require('mysql');
varpool=mysql.createPool({
host:'127.0.0.1',
port:'3306',
user:'root',
password:'',
database:'sinatest'
});
functionComment(){};
module.exports=Comment;
pool.on('connection',function(connection){
connection.query('SETSESSIONauto_increment_increment=1');
});
pool.getConnection(function(err,connection){
Comment.prototype.readComment=function(callback){
pool.query('SELECTcommentFROMbbs',function(err,result){
console.log("invoked[readComment]");
callback(err,result);
});
}
});
bbs.js
varexpress=require('express'),
router=express.Router(),
Comment=require('../bbs_a.js'),
TITLE_REG='评论区';
router.get('/',function(req,res){
console.log("1");
varcomment=newComment();
comment.readComment(function(err,result){
if(err){
console.log("2");
res.status(404).end(err);
}else{
console.log("3");
res.render('bbs',{
items:result
});
}
});
});
bbs.ejs

评论区

    <%for(vari=0;i
  • <%=item[i].comment%>
  • <%}%>
ps:我是看这个教程http://www.cnblogs.com/zhongweiv/category/539147.html学习的。写得很棒,特别是示例比较详细,而不只是讲原理。但并不能解决我的问题……
牧羊人nacy
浏览 364回答 1
1回答
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript