mongoose是node.js操作mongoDB数据库的一种工具,借助于mongoose,我们可以便捷的完成一些数据库的基本操作,基本使用如下:
1、安装
2、引入mongoose && 基本配置
db.js
- 1 const mongoose = require('mongoose');
- 2
- 3 mongoose.Promise = global.Promise;
- 4 let DB_URL = '';
- 5 const env = process.env.NODE_ENV;
- 6
- 7 if(Object.is(env, 'development')){//开发环境
- 8 DB_URL = 'mongodb://localhost:27017/website-dev';
- 9 }else if(Object.is(env, 'production')){//生产环境
- 10 DB_URL = 'mongodb://localhost:27017/website-pro';
- 11 }else {
- 12 DB_URL = 'mongodb://localhost:27017/website-dev';
- 13 }
- 14
- 15 //连接数据库
- 16 mongoose.connect(DB_URL, { useNewUrlParser: true, useCreateIndex: true });
- 17 const db = mongoose.connection;
- 18 db.once('error', () => console.warn(`连接数据库==》${DB_URL} 失败!!!`));
- 19 db.once('open', () => console.log(`连接数据库==》${DB_URL} 成功!`));
在用express开发时,要在app.js中引入该文件,当程序启动后,会自动执行此段代码
app.js
- const db = require('./db');
项目启动结果:

3、创建Schema
Mongoose 的一切始于 Schema。每个 schema 都会映射到一个 MongoDB collection ,并定义这个collection里的文档的构成。我们常用的Oracle、mysql属于关系型数据库,对于MongoDB这种NoSql数据库,一个collection对应的是关系型数据库中的一个表。
如下实例初始化一个Schema:
- 1 const mongoose = require('mongoose');
- 2 const Schema = mongoose.Schema;
- 3
- 4 let userList = new Schema({
- 5 username: {
- 6 type: String,
- 7 required: true,
- 8 unique: true //用户名唯一
- 9 },
- 10 password: {
- 11 type: String,
- 12 required: true
- 13 }
- 14 });
- 15
- 16 let models = mongoose.model('users', userList);
- 17
- 18 module.exports = models;
4、操作数据库
如果我们想完成一些CRUD操作,就需要借助Schema的实例models;Models是从 Schema
编译来的构造函数。 它们的实例就代表着可以从数据库保存和读取的 documents。 从数据库创建和读取 document 的所有操作都是通过 model 进行的。
- 1 const express = require('express');
- 2 const router = express.Router();
- 3 const model = require('../model/user');
- 4
- 5 /* GET users listing. */
- 6 router.get('/', function(req, res, next) {
- 7 res.send('respond with a resource');
- 8 });
- 9
- 10 router.post('/login', (req, res, next) => {
- 11 model.find({username: 'admin', password: '123'}).then(user => {
- 12 let data = {
- 13 msg: '登录成功',
- 14 code: 0,
- 15 content: ''
- 16 };
- 17 if(user){
- 18 data.token = user[0]._id;
- 19 }else{
- 20 data.code = 2;
- 21 data.msg = '登录失败';
- 22 data.content = '账号或密码错误';
- 23 }
- 24 res.send(data);
- 25 })
- 26 });
- 27
- 28 router.post('/userRegister', (req, res, next) => {
- 29 let data = {
- 30 msg: '注册成功',
- 31 code: 0,
- 32 content: ''
- 33 };
- 34 let list = new model(req.body);
- 35 list.save((err, list) => {
- 36 if(err) {
- 37 data.code = 1;
- 38 data.msg = '注册失败';
- 39 }
- 40 res.send(data);
- 41 })
- 42
- 43 });
- 44
- 45
- 46 module.exports = router;
数据库表结构:

以上只是简单使用,更多详情请参考官方文档:https://cn.mongoosedoc.top/docs/index.html