mongoose之操作mongoDB數據庫
阿新 • • 發佈:2019-03-02
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數據庫