在使用nodejs+mongodb+express搭建个人博客的时候,mongodb使用的是2.2.3版本,虽然足够使用了,但也有一些不尽人意的地方,所以在后期还是决定学习一下mongoose,使用mongoose来搭建这个个人博客。
1.连接数据库
var dbUrl = 'mongodb://localhost:27017/Cblog';//我的数据库名字为Cblog
mongoose.Promise = global.Promise;
mongoose.connect(dbUrl,{ useNewUrlParser: true });
2.介绍一下mongoose中的几个重要的基本概念(源地址:https://blog.csdn.net/yakie/article/details/79035771)
- Schema: 相当于一个数据库的模板. Model可以通过mongoose.model 集成Schema的基本属性内容. 当然也可以选择不继承.
- Model: 基本文档数据的父类,通过集成Schema定义的基本方法和属性得到相关的内容.
- instance: 这就是实实在在的数据了. 通过 new Model()初始化得到.
Schema用来定义数据库文档结构,数据库有什么字段、字段是什么类型、默认值、主键之类的信息。除了定义结构外,还能定义文档的实例方法,静态模型方法,复合索引,中间件等。详情查看mongoose官方文档。
Models 是从 Schema
编译来的构造函数。 它们的实例就代表着可以从数据库保存和读取的 document。 从数据库创建和读取 document 的所有操作都是通过 model 进行的。
通过一个demo理解mongoose操作数据的流程
//定义一个schema
let Schema = mongoose.Schema({
category:String,
name:String
});
Schema.methods.eat = function(){
console.log("I've eatten one "+this.name);
}
//继承一个schema
//.modle()第一个参数是跟 model 对应的集合( collection )名字的 单数 形式。 Mongoose 会自动找到名称是 model 名字 复数 形式的 collection 。
// 对于下例,fruit 这个 model 就对应数据库中 fruits 这个 collection。.model() 这个函数是对 schema 做了拷贝(生成了 model)。 你要确保在调用 .model() 之前把所有需要的东西都加进 schema 里了
let Model = mongoose.model("fruit",Schema);
//生成一个document
let apple = new Model({
category:'apple',
name:'apple'
});
//存放数据
apple.save((err,apple)=>{
if(err) return console.log(err);
apple.eat();
//查找数据
Model.find({name:'apple'},(err,data)=>{
console.log(data);
})
});
3.然后就可以对数据进行增删查改了