1. 程式人生 > >mongoose之操作mongoDB數據庫

mongoose之操作mongoDB數據庫

website 基本 ise local gist b數 required l數據庫 list

  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

  

mongoose之操作mongoDB數據庫