48、mongoose入门
前言:本入门篇文章我是直接把mongoose官网中的“Quick Start”看了一遍,然后在此基础上自己于本机上实践一番后写的;所以,文章中的代码和解释性文字大部分都来着官网,我这只不过是白话版,大家可以去官网阅读后,再结合我这篇文章亲自实践操作一番,效果可能会更好。
1、约定
现在假设我们想把看到的每一只猫都用数据库给记录下来,即每只猫都是一条document
(数据行)。
2、什么是mongoose?
Mongoose是MongoDB的一个对象模型工具,是基于node-mongodb-native开发的MongoDB nodejs驱动,可以在异步的环境下执行。同时它也是针对MongoDB操作的一个对象模型库,封装了MongoDB对文档的的一些增删改查等常用方法,让NodeJS操作Mongodb数据库变得更加灵活简单。
mongoose入门—狼叔
mongoose官网快速入门篇
3、安装mongoose
$ npm install mongoose
4、连接数据库并监听数据库是否连接成功
var mongoose = require('mongoose');
mongoose.connect('[mongodb://localhost/test');](mongodb://localhost/test');)
mongoose.connection.on('error',(err) => {
console.log(`数据库连接失败${err}`);
});
mongoose.connection.on('open',() => {
console.log('数据库连接成功');
});
OK,现在假设我们连接数据库已经成功了。
5、定义Schema和模型
(1)既然要记录所看到的每一只猫,更为具体一点,我们就是要记录所看到的的每一只猫的名字
在mongoose
中,所有的东西都来源自Scehma
,我们用它来定义文档的结构。
var kittySchema = new mongoose.Schema({
name: String
});
(2)现在我们拥有一个name属性
为string类型
的Schema
,下一步用它构造生成一个模型Model
var Kitten = mongoose.model('Kitten', kittySchema);
6、实例化Model
(1)模型是用于构造文档的类,接下来,让我们实例化这个Ketten模型
,把我们刚刚在路边上看到的那只猫(数据记录行document
)给记录下来,起个名叫做塞冷丝
var silence = new Kitten({name: 'Silence'});
console.log(silence.name); // 'Slience'
7、添加函数方法
(1)猫都是会叫的,让我们看看怎么在文档中添加“说话”的功能
// 记得一定要在构造生成Model之前把这个方法添加到Schema
kittySchema.methods.speak = function() {
var greeting = this.name ? 'My name is " + this.name : 'I do not have a name';
console.log(greeting);
}
var Kitten = mongoose.model('Kitten', kittySchema);
(2)这样,在Schema
的methods
中添加了一个speak
的方法,该方法会暴露在每一个文档实例中,于是所有的实例都可访问到这个方法(类似于原型链中方法的继承)
silence.speak(); // My name is Silence
8、保存到数据库
ok,现在我们看到的这只猫又有名字又会说话了,接下来就是把它保存到MongoDB数据库中;
save方法
用于保存document
到数据库,第一个参数err
用于检测回调函数是否报错。
silence.save(function(err, silence) {
if(err) return console.log(err);
silence.speak();
}
9、查询
随着时间的流逝,现在我们想看看已经记录了多少只猫了;
我们可以通过Kitten模型
访问我们所有记录过的所有小猫(数据记录行document
)
Kitten.find(function(err, doc) {
if(err) return console.log(err);
console.log(doc);
}
10、结言
还是回到开头,这篇文章主要还是翻译了官网然后加上自己的一些理解以较白话的形式呈现出来的,希望对你理解有帮助,翻译水平不是很好,见谅。