node中使用mongoDB定义文档并建立索引视图的解决方法

基于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,,然后就各种找问题。最后发现了问题所在 –>

  1. 以上代码应该放在routes文件夹下的index.js里,这是专门添加页面路由的一个文件。试了好几次,刚开始把定义文档那部分放在app.js里,把添加路由放在index.js里,但是会报错,Target is not defined,但是都放在app.js下又会报404,所以后来就想着把定义文档也放在添加路由里面,并且在index.js里引入MongoDB,var mongoose = require('mongoose') ,然后就解决了这个问题。

  2. 还有一个问题就是想要在xxx.jade里引入layout.jade布局文件时,extends现在不管用,只能用include去引入(昨天extends还可以,今天不知为什么就不行了,可能是更新了express的版本)。比如在error.jade里引入时,应该这么写:include layout.jade,但是要在tasks/lyindex.jade 引入时,就得注意文件路径了:include ../layout.jade

看来书上的东西也不一定都是对的,很多东西还是需要自己去摸索去思考的哈哈,真的是长见识很多

猜你喜欢

转载自blog.csdn.net/maid_04/article/details/80338291