14 - mongoose
2019-01-20 本文已影响404人
Elvmx
简介
nodejs环境下对 mongodb 进行便捷操作的对象模型工具
安装
npm install mongoose --save
建立连接
// config/db.js
const mongoose = require('mongoose');
// 定义连接的地址,mz 是数据库的名字
const url = 'mongodb://localhost:27017/mz';
/**
* 调用 connect 方法进行连接。
* 1. 回调函数的方式
* 2. promise 方式
*/
// mongoose.connect(url, { useNewUrlParser: true }, function(err) {
// if (err) {
// console.log('连接失败!', err.message);
// } else {
// console.log('连接成功~');
// }
// })
mongoose
.connect(url, { useNewUrlParser: true })
.then(() => {
console.log('连接成功~');
})
.catch(err => {
console.log('连接失败!', err.message);
})
// 最后将 mongoose 暴露出去
module.exports = mongoose;
schema
schema 是一种描述 mongodb 中 collection(集合) 结构的一种东西。
// models/banner.js
// 引入 db.js
const db = require('../config/db.js');
// 定义 schema
const schema = new db.Schema({
name: String, // banner 名字
imgUrl: String, // banner 图片地址
startTime: { // banner 显示的开始时间
type: Number,
default() {
return new Date().getTime()
}
},
endTime: { // banner 显示的结束时间
type: Number,
default() {
return new Date().getTime() + 1 * 24 * 60 * 60 * 1000; // 当前时间加 1 天
}
}
});
// 基于 schema 创建 model, 并暴露出去。
module.exports = db.model('Banner', schema);
Schema 的类型:
- String
- Number
- Date
- Buffer
- Boolean
- Mixed
- ObjectId
- Array
- Decimal128
model
基于 Schema 编译来的构造函数。model 的实例代表着可以从数据库保存和读取的 documents。从数据库创建和读取 document 的所有操作都是 通过 model 进行的。
上面 models/banner.js 文件最后暴露出去的就是 model