zoukankan      html  css  js  c++  java
  • mongoose之操作mongoDB数据库

      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;

     数据库表结构:

      

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

       

  • 相关阅读:
    快速幂
    hdu 1595 find the longest of the shortest(迪杰斯特拉,减去一条边,求最大最短路)
    hdu 4121 Xiangqi
    hdu 2224 The shortest path
    hdu4923
    矩阵模板
    hdu4570(区间dp)
    hdu1978(记忆化搜索)
    hdu4283(区间dp)
    hdu1160最长递减子序列及其路径
  • 原文地址:https://www.cnblogs.com/gerry2019/p/10461009.html
Copyright © 2011-2022 走看看