欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

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');

  项目启动结果:

mongoose之操作mongoDB数据库

  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;

 数据库表结构:

  mongoose之操作mongoDB数据库

  以上只是简单使用,更多详情请参考官方文档: