我是看教程学习的,做一个简易评论区,但教程中只说了如何提交数据,但没说如何获取。现在一头雾水。
流程应该是:a.启动(app.js)-->b.查询(bbs_a.js)-->c.路由(routes/bbs.js)-->d.显示(views/bbs.ejs)
但是不知道如何具体操作,对这几个步骤之间的关系也不甚清楚,网上的教程都是含糊带过,有朋友能讲解一下吗?非常感谢!
这是我写的代码
更新bbs_a.js,旧的是我单独摘出来的read,实际上有save和read
var express = require('express'); var path = require('path'); var favicon = require('serve-favicon'); var logger = require('morgan'); var cookieParser = require('cookie-parser'); var bodyParser = require('body-parser'); var session = require('express-session'); var routes = require('./routes/index'); var bbs = require('./routes/bbs'); var app = express(); // view engine setup app.set('views', path.join(__dirname, 'views')); app.set('view engine', 'ejs'); // uncomment after placing your favicon in /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); // catch 404 and forward to error handler app.use(function(req, res, next) { var err = new Error('Not Found'); err.status = 404; next(err); }); // error handlers // development error handler // will print stacktrace 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 }); }); } // production error handler // no stacktraces leaked to user app.use(function(err, req, res, next) { res.status(err.status || 500); res.render('error', { message: err.message, error: {} }); }); module.exports = app;
在这里,我把存储数据和读取数据放在一起。但数据库操作很奇怪……不知道怎么操作才合理
var mysql = require('mysql'); var pool = mysql.createPool({ host: '127.0.0.1', port: '3306', user: 'root', password: '', database: 'sinatest' }); function Comment() {}; module.exports = Comment; pool.on('connection', function(connection) { connection.query('SET SESSION auto_increment_increment=1'); }); pool.getConnection(function(err, connection) { Comment.prototype.readComment = function (callback){ pool.query('SELECT comment FROM bbs', function(err, result) { console.log("invoked[readComment]"); callback(err, result); }); } });
var express = require('express'), router = express.Router(), Comment = require('../bbs_a.js'), TITLE_REG = '评论区'; router.get('/', function(req, res) { console.log("1"); var comment = new Comment(); comment.readComment(function(err, result) { if (err) { console.log("2"); res.status(404).end(err); } else { console.log("3"); res.render('bbs', { items: result }); } }); });
评论区
<% for(var i=0; i - <%=item[i].comment %>
<% } %>
ps:我是看这个教程 http://www.cnblogs.com/zhongweiv/category/539147.html 学习的。写得很棒,特别是示例比较详细,而不只是讲原理。但并不能解决我的问题……
简单来一发:
bbs.js
bbs.ejs
没测试过大致就是这样,有问题,留言
1.在
bbs_a.js
,你需要导出一个对象User2.在
bbs.js
中,需要引入bbs_a.js
的对象3.调用User.read方法,获取数据
吐槽下,你的数据库方法有点奇怪啊。。。
修改成这样后,为什么还是会报错呢?
bbs_a.js
bbs.js
运行后报错:
你应该有些js没有写:module.exports = router;