mongoose入门
前面我们已经认识了Mongoose,也了解了MongoDB,回顾一下:MongoDB是一个对象数据库,是用来存储数据的;Mongoose是封装了MongoDB操作的一个对象模型库,是用来操作这些数据的。
好,下面我们就来进行操作数据的第一步吧。
准备
1、 安装mongoose
$ npm install --save mongoose
2、 引用mongoose
var mongoose = require("mongoose");
3、 使用”mongoose”连接数据库
var db = mongoose.connect("mongodb://user:pass@ip:port/database");
说明
- user 是mongodb里用户名
- pass 是mongodb里用户对应的密码
- ip 是mongodb服务器可以访问
ip
地址,比如本地为127.0.0.1
- port 是mongodb服务器可以访问端口,默认是
27017
测试
执行下面代码检查默认数据库test,是否可以正常连接成功?
var mongoose = require("mongoose");
var db = mongoose.connect("mongodb://127.0.0.1:27017/db_helloworld");
db.connection.on("error", function (error) {
console.log("数据库连接失败:" + error);
});
db.connection.on("open", function () {
console.log("数据库连接成功");
});
执行代码
$ node book-source/db/helloworld/connect.js
数据库连接成功
当mongodb没有启动的时候会报错,当出现如下问题,请执行mhg
启动mongodb即可
$ node book-source/db/helloworld/connect.js
数据库连接失败:MongoError: connect ECONNREFUSED 127.0.0.1:27017
最小demo
这里给出极简demo,用于讲解mongoose从连接数据库到对数据库进行操作完整过程,这样更容易让读者了解核心原理,代码如下:
// 1、引入`mongoose`模块
var mongoose = require('mongoose');
// 2、通过`mongoose.connect`连接mongodb数据库
mongoose.connect('mongodb://127.0.0.1/db_helloworld');
// 3、通过`mongoose.model`定义模型(model)
var Cat = mongoose.model('Cat', { name: String });
// 4、通过`new`关键字实例化Cat模型,参数是`{ name: 'Zildjian' }`,创建kitty对象
var kitty = new Cat({ name: 'Zildjian' });
// 5、执行`kitty.save`来保存到数据库
kitty.save(function (err) {
if (err) {
console.log('save error:' + err);
}
console.log('save sucess');
});
核心步骤说明
- 定义模型(model)
- 通过
new
关键字实例化Cat模型,创建kitty对象 - 执行
kitty.save
来保存到数据库
这个其实就是mongoose最常见的用法,首先约定schema,即在模型model定义的时候指定字段和字段类型,避免乱用schema-free问题。之后对实例化模型创建的对象进行操作,完成我们常见的增删改查功能。
模型(model)定义即定义对象,对象操作即对数据库进行操作
执行如下
$ node book-source/db/helloworld/helloworld.js
如无错误日志,即代表数据保存成功。此时打开robo mongodb客户端查看一下具体数据是否保存成功。
创建robo客户端连接
查看cat数据
如果有{ name: 'Zildjian' }
记录的,即为正常。