基于nodeJS创建一个Express站点后,需要连接MongoDB数据库,此时需要先定义文档,再创建索引(index)视图,使数据库的内容能够展示在网站中。对于怎么创建Express站点,怎么连接到MongoDB库,网上有很多相关资料。
首先定义文档应该这么写没错:
mongoose.connect('mongodb://localhost/todo_development'); var schema = mongoose.Schema; var ObjectID = schema.ObjectID; // 定义模型的模式 var Task = new schema({ task: String }); // 使用变量来创建新任务 var Task = mongoose.model('Task',Task);
然后就应该创建视图并且添加路由了吧,创建视图就不说了吧,上图中的lyindex.jade文件,只不过是用jade这个web框架写的HTML而已,能显示在页面中就好了,重点是添加路由
router.get('/tasks',function(req,res) { Task.find({}, function(err, docs) { res.render('tasks/lyindex', { title: 'Todos lyindex view', docs: docs }); }) });
如上是文档目录结构和定义文档以及添加视图路由的代码,书中的这些代码是全部写在目录中的app.js里面的,但是,我打开页面竟然显示的是404,,然后就各种找问题。最后发现了问题所在 –>
以上代码应该放在routes文件夹下的index.js里
,这是专门添加页面路由的一个文件。试了好几次,刚开始把定义文档那部分放在app.js里,把添加路由放在index.js里,但是会报错,Target is not defined
,但是都放在app.js下又会报404,所以后来就想着把定义文档也放在添加路由里面,并且在index.js里引入MongoDB,var mongoose = require('mongoose')
,然后就解决了这个问题。还有一个问题就是想要在
xxx.jade
里引入layout.jade
布局文件时,extends现在不管用,只能用include去引入(昨天extends还可以,今天不知为什么就不行了,可能是更新了express的版本)。比如在error.jade
里引入时,应该这么写:include layout.jade
,但是要在tasks/lyindex.jade
引入时,就得注意文件路径了:include ../layout.jade
看来书上的东西也不一定都是对的,很多东西还是需要自己去摸索去思考的哈哈,真的是长见识很多