新建一个js文件,引入mongoose,这里可以参照官网 写的一个 hello world 。
const mongoose = require('mongoose') // 连接数据库 mongoose.connect('mongodb://数据库地址(包括端口号)/数据库名称', (err, ret) => { if (err) { console.log('连接失败') } else { console.log('连接成功') } })这样,我们就可以连接上数据库了,注意:如果没有指定数据库名称,则默认连接 test 数据库。
创建 Schema ,设计文档结构
Schema 到底是个什么东西呢,我们在往数据库插入数据之前是不是应该得稍微设计下文档的结构,也就是关系数据库中表的结构啥的,因为有一定的设计才使得数据的完整性,不会产生脏数据,Schema就是用来干这个事情的,我们看下官方的介绍
Schema 主要用于定义 MongoDB 中集合 Collection 里文档 document 的结构。mongoose 对表结构的定义,每个 Schema 会映射到mongodb中的一个 collection,Schema 不具备操作数据库的能力。
定义Schema非常简单,指定字段名和类型即可,支持的类型包括以下8种:
String 字符串 Number 数字 Date 日期 Buffer 二进制 Boolean 布尔值 Mixed 混合类型 ObjectId 对象ID Array 数组通过mongoose.Schema来调用Schema,然后使用new方法来创建schema
// 引入Schema const Schema = mongoose.Schema // 通过 new 创建一个Schema const userSchema = new Schema({ // 这里来设计文档的结构,后面插入集合的每一个文档必须是以下指定的结构 name: { type: String, required: true // 规定 name 是必须有的字段 }, password: { type: String, required: true }, email: { type: String } })通过以上的实例,我们就创建了一个 userSchema 的架构,规定了每个文档中必须有 name, password 字段,且类型为 String,email 字段类型为 String,有或没有都可以。
把 Schema 发布为 model (模型)
简单说就是model是由 Schema 生成的模型,可以对数据库的操作。model的每一个实例(instance)就是一个文档。
把 Schema 发布为模型只需调用mongoose的 mongoose.model() 方法即可,mongoose.model() 接收两个参数,第一个参数表示模型的名称,第二个参数是 Schema,返回值为模型构造函数。这里一定得把第一个参数设置成和 mongoose.model() 的返回值相同,否则会出错。最后得到的集合名称就为模型名称的小写形式,如果模型名称最后一个字符是字母,则变成复数形式,如果最后一个是数字,则不变,比如:模型名称:User,得到的集合名称为: users,模型名称为:User1, 得到的集合名称为;user1。
// 把Schema 发布为模型 const User = mongoose.model('User', userSchema)通过模型构造函数,可以对数据库进行一系列增删改查的操作。
好了,我们经过以上的步骤,最后就可以通过 User 模型构造函数操作数据库了。
mongoose 操作 mongoDB 增加数据实例化一个模型构造函数就得到一个具体文档。
const user = new User({ // 传入具体的数据信息,必须和之前的Schema 配置的结构一致 name: 'pubdreamcc', password: '123456', email: '333@pubdreamcc.com' // 可有可无 }) // 通过save()方法持久化存储数据 user.save((err, ret) => { if (err) { console.log('保存失败') } else { console.log('保存成功') console.log(ret) // ret 就是刚新增加的文档 } })ok, 通过上面两步我们就已经保存了一条数据到数据库中了,就是怎么简单。
查询数据查询数据这里有好几个 API , 可以看下 mongoose 的官网:
find()
findById()
findOne()
具体的用法和之前在控制台 操作mongoDB 数据类似,不清楚的同学可以查看本章第一节知识点: mongoDB数据库的使用