mongoose+express初入門

參考網址

菜鳥教程:https://www.runoob.com/mongod...
express:https://www.expressjs.com.cn/
mongoose:http://www.mongoosejs.net/javascript

源碼

github:https://github.com/nowRookie/...html

一、下載mongodb

一、mongodb下載地址:https://www.mongodb.com/try/d...
二、mongodb下載須要訪問外網,推薦使用Ghelper的google插件
三、安裝過程必定不要勾選install mongodb compass,圖形工具,不然會很慢
四、配套使用的圖形工具,我選擇的robo3T,下載地址https://robomongo.org/
五、設置環境變量,E:\mongodb\binjava

二、快速啓動mongodb

(1)經過.bat批處理文件

新建一個.bat後綴的文件,內容以下node

E:
cd E:\mongodb\bin
start mongod --dbpath=E:\mongodb\data
D:
cd D:\360download\Robo 3T 1.3.1
start robo3t.exe

(2)網上說能夠經過安裝開機啓動,net start MongoDB,來啓動,可是我沒有成功

三、基本項目express + mongoose

一、新建文件夾express
二、npm init,一直回車,初始package.json
三、修改package.json,安裝對應的包
四、這裏必定要安裝最新的babel相關的包@babel,不然項目中使用某些es6新特性還不支持,如{...}git

"name": "app",
  "version": "1.0.0",
  "description": "",
  "main": "index.js",
  "scripts": {
    "start": "nodemon --exec babel-node ./app.js"//項目熱更新
  },
  "author": "",
  "license": "ISC",
  "dependencies": {
    "@babel/cli": "^7.12.1",
    "@babel/core": "^7.12.3",
    "@babel/node": "^7.12.6",
    "@babel/preset-env": "^7.12.1",
    "asyncro": "^3.0.0",
    "body-parser": "^1.19.0",
    "cookie-parser": "^1.4.5",
    "cookie-session": "^1.4.0",
    "cors": "^2.8.5",
    "express": "^4.17.1",
    "fs-extra": "^9.0.1",
    "hbs": "^4.1.1",
    "lodash": "^4.17.15",
    "moment": "^2.24.0",
    "mongoose": "^5.9.9",
    "multer": "^1.4.2",
    "nodemon": "^2.0.4",
    "ueditor": "^1.2.3"
  }
}

四、新建.bablerc文件

{
    "presets": [
        [
            "@babel/preset-env"
        ]
    ]
}

五、新建app.js,內容以下

import express from "express"
const app = express()
import path from "path"

import { port } from "./config"

// cors跨域處理
import cors from "cors"
app.use(cors())

// body-parser中間件
import bodyParser from 'body-parser'
app.use(bodyParser.json())

// middleware打印log信息
import log from "./middleware/log"
app.use(log())

// 靜態資源
app.set('view engine', 'hbs')
app.set("views", process.cwd() + "/hbs")
app.use(express.static("static"))
app.use(express.static("uploads"))
app.use("/virtual", express.static(path.join(__dirname, "static")))

// 路由
import router from "./router/index"
router(app)

// ueditor百度文本編輯框
import ueditor from "./plugins/ueditor.js"
ueditor(app)

// mongoose鏈接
import mongoose from 'mongoose';
mongoose.set('useFindAndModify', false)
mongoose.connect('mongodb://localhost/websiteDB', {
  useNewUrlParser: true,
  useUnifiedTopology: true
});

// db數據庫
const db = mongoose.connection;
db.on('error', () => console.error('connection error:'));
db.once("open", () => {
  app.listen(port, () => console.log(`Example app listening on port ${port}!`))
})

六、mongoose操做數據庫

mongoose主要有兩樣東西scehma、model
咱們能夠新建一個文件userModel.jses6

const mongoose = require("mongoose")
let Schema = mongoose.Schema({
    username: {
        type: String,
        required: true,
    },
    password: {
        type: String,
        required: true,
        minLength: 6,
        maxLength: 20,
        validate: {
            validator: (value) => {
                return /^(?![0-9]+$)(?![a-zA-Z]+$)[0-9A-Za-z]{6,20}$/.test(value)
            },
            message: "tags 必填"
        }
    }
}, {
    collection: "users",
    minimize: false,//將會保存空對象
    timestamps: { createdAt: 'createTime', updatedAt: "updateTime" }
})
let Model = mongoose.model("users", Schema)
export default Model

至此就能夠經過Model去操做數據庫了
配合上express的話
新建一個userRouter.jsgithub

import express from "express"
const eRouter = express.Router()
import userModel from "../model/userModel"
eRouter.route("/api/users")
    .get((req, res,) => {
        userModel.find(req.query, (dbErr, dbRes) => {
            if (dbErr) return res.status(500).send({ code:201, message: "數據庫查詢錯誤" })
            res.send(dbRes)
        })
    })
export default eRouter

最後在app.js當中引入web

app.use("/", userRouter)

其餘

(1)mongo.exe 基本命令

//dbName:數據庫名稱
use dbName //建立數據庫

//sheetName:表名稱
db.sheetName.insert({}) //插入數據,mongo會自動帶上一個_id的標識符
db.sheetName.find() //查詢
db.sheetName.find(id : {$gt : 2}).forEach(printjson) //$gt大於,printjson打印
db.sheetName.sort({keyName : -1}) //按照keyName降序排列
db.sheetName.find().limit(2) //限制查詢條數爲2條
db.sheetName.count() //計數
db.sheetName.remove({}) //刪除所有
db.sheetName.update({id : 1},{$set:{keyName : newVal}}) //更新id爲1的數據,$set設置新的value

//建立admin用戶
db.createUser(
    user : "admin",pwd : "admin",
    roles : [
        {role : "userAdminAnyDataBase",db : "admin"}
    ]
)
db.createUser(
    user : "username",pwd : "123456",
    roles : [
        {role : "userAdmin",db : "employee"}
    ]
)
//role能夠爲 userAdminAnyDataBasr userAdmin read readWrite

(2)bin文件下.exe的區別:

mongodump.exe 備份程序
mongostat.exe 監控服務器發生的增刪改查
mongotop.exe 跟蹤報告讀寫活動
ServerStatus 返回數據庫狀態,包括磁盤使用,內存mongodb

相關文章
相關標籤/搜索