【Node】Nodejs Mongodb Express後臺mvc架構基礎(入門學習)

前言


本文檔針對於像我同樣的初學者,本身寫了個簡單的基礎demo學習。原來我是一名本分老實的Android Developer,被朋友帶入放蕩不羈的Node坑,一入坑再也爬不上來。入門簡單強烈推薦會js的朋友入坑(我一個作Android的都入坑,因此,別慌),以前爲本身的開源App寫的一個小後臺(寫法極其low,雖然如今也不怎麼樣),如今稍有改進,之後會繼續用簡潔優美的寫法優化。(優美?不存在的)html

Github項目地址

項目介紹

項目使用Express框架和Mongodb數據庫node

項目使用

1.clone項目

git clone https://github.com/LiangLuDev/base-node-servergit

2.依賴模塊安裝

npm installgithub

3.mongodb數據庫安裝,啓動

安裝啓動這類教程網上不少,自行查閱mongodb

4.啓動

npm start數據庫

5.測試

locahost:3390 訪問成功就完畢了。express

項目詳解

  1. 項目入口 app.js
  • express組件初始化
  • 數據庫鏈接
  • 註冊路由
  • node服務啓動
  1. 數據庫配置鏈接 數據庫操做(鏈接、增刪改查等)使用mongoose模塊,mongoose很好用,我這邊只展現最基本的鏈接操做
const mongoose = require('mongoose');
const dbUrl = 'mongodb://localhost:27017/base-node-server'

exports.connect = () => {
    mongoose.connect(dbUrl, (err) => {
        if(err){
            console.log('數據庫鏈接失敗');
        }else{
            console.log('數據庫鏈接成功');
        }
    })
}
複製代碼

mongoose功能遠遠不止這些, 詳細請查看相關api, 中文版貌似機器翻譯,不怎麼完善,酌情使用,儘可能閱讀官方api。npm

  1. api主路由 api主路由,全部的api數據功能相關在此匯聚,做爲主路由會分發到各個功能模塊路由
/**
 * 主路由
 */
const user = require('./user')
const order = require('./order')
const address = require('./address')
const headers = require('./headers')

module.exports = app => {
    //全部的數據請求都須要驗證
    app.use(headers.apptype)
    //全部的數據請求都須要驗證token
    app.use(headers.token)
    //功能模塊子路由
    app.use('/api/user', user)
    app.use('/api/order',order)
    app.use('/api/address',address)
}
複製代碼
  1. 子路由 功能子路由,例如:登陸、註冊操做在此聲明匯聚
/**
 * 用戶子路由
 */
const express = require('express');
const User = require('../../controller/user/user');
const router = express.Router();

router.post('/register',User.register)
router.post('/login',User.login)

module.exports = router
複製代碼
  1. controller邏輯數據處理 邏輯處理、數據庫操做都在此處理。 例:用戶註冊完畢存入數據庫,返回前臺註冊成功等操做
//註冊用戶
    async register(req, res, next) {
        let username = req.body.username;
        let userpassword = req.body.userpassword;
        try {
            const userinfo = {
                user_name: username,
                user_password: userpassword,
                create_time: dtime().format('YYYY-MM-DD HH:mm')
            }
            await UserModel.create(userinfo)
            res.json({
                code: Constant.RESULT.SUCCESS.code,
                msg: Constant.RESULT.SUCCESS.msg,
                data: '註冊成功',
            })
        } catch (err) {
            res.json({
                code: Constant.RESULT.FAILD.code,
                msg: Constant.RESULT.FAILD.msg,
                data: '註冊失敗',
            })
        }
    }
複製代碼
  1. 數據model 這裏就是mongoose的強大之處,使用mongoose綁定mondel,而後mondel就能夠直接對數據庫增刪改查,數據庫字段、索引等等在此聲明。
/**
 * @type 數據庫model
 */
const mongoose = require('mongoose');
const Schema = mongoose.Schema;

const userSchema = new Schema({
    user_id: Number,
    user_name: String,
    user_password: String,
    user_age: String,
    user_level: String,
    create_time:String
})

//創建索引  提升查詢效率
userSchema.index({user_id: 1})

const userinfo = mongoose.model('userinfo', userSchema);

module.exports = userinfo

複製代碼

意見反饋

若是遇到問題或者好的建議,請反饋到:issue、927195249@qq.com 或者LiangLuDev@gmail.comjson

若是以爲對你有用的話,贊一下吧!api

相關文章
相關標籤/搜索