mongoose之操作mongoDB数据库
程序员文章站
2022-06-18 15:37:43
mongoose是node.js操作mongoDB数据库的一种工具,借助于mongoose,我们可以便捷的完成一些数据库的基本操作,基本使用如下: 1、安装 2、引入mongoose && 基本配置 db.js 在用express开发时,要在app.js中引入该文件,当程序启动后,会自动执行此段代码 ......
mongoose是node.js操作mongodb数据库的一种工具,借助于mongoose,我们可以便捷的完成一些数据库的基本操作,基本使用如下:
1、安装
npm install mongoose -d
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;
数据库表结构:
以上只是简单使用,更多详情请参考官方文档: