1. 程式人生 > >Node.js系列-express(下)

Node.js系列-express(下)

 前言

  距上次更新部落格又兩個月多了,這兩個月內除了上班時間忙公司的專案外,下班後也沒有閒著,做了點外包,有小程式的,管理端的專案。也可能那段時間做的外包專案也都比較急,所以晚上都搞到一點左右睡,嚴重的壓榨了自己的休息時間,搞得緩了很久才恢復過來。當然,也發現了忙外包的好處和壞處了,好處就可以多了些專案經驗,例如小程式的做的是音視訊類的教育應用,也算了解了一些公司專案不需要用到的api;管理端的也應用了vue+element-ui開發,算為公司專案奠定了些基礎吧。壞處嘛,就是真心勞累,也由於瞭解市場不多,報價並不高,還可以說低,接了後問了朋友都說我的價格低啊,心累啊~~~,還有就是做的專案其實說深的,對自身技術提高感覺效果一般,所以也總結了技術的提升還是需要自身沉澱,不不能靠一味的多做專案。好了,不扯了,關於node.js的學習也已經一大段時間沒更新了,現在繼續更新,有講得不到位或者錯誤的地方希望大佬指出。

Express

  express(上)主要講了express框架結構、路由、中介軟體等概念。這章我們主要實現簡單的使用者增改查等功能(暫不借助資料庫),熟悉express框架的開發。還是先安裝express-generator應用骨架並使用ejs模板

//1.安裝express-generator 
npm install expess-generator -g     
//2.使用ejs模板
express --view=ejs      
//3.安裝依賴    
npm install

  框架結構:在原框架上新建models資料夾,用於儲存使用者模型

.
├── app.js
├── bin
│   └── www
├── package.json
├── models
│   └── in_memo
│       └── users.js
├── public
│   ├── images
│   ├── javascripts
│   └── stylesheets
│       └── style.css
├── routes
│   ├── index.js
│   └── users.js
└── views
    ├── error.ejs
    ├── index.ejs
    └── layout.ejs

  這樣,大致的框架我們就搭建好了。

使用者的增改查

  1.新建使用者模型:構造使用者類,建立使用者,獲取使用者列表,獲取某一使用者,更新使用者

/**
 * Created by aaron.
 * description:User Model
 */
let USER_ID_INT=10000;
let users=[];

class User{
    constructor(params){
        if(!params.name || !params.age)
            throw new Error('name and age is required when create a new user.')
        
this.name=params.name this.age=params.age this._id=USER_ID_INT++ } } async function createANewUser(params) { const user=new User(params) users.push(user) return user } async function getUsers() { return users } async function getUserById(userId,params) { const user=users.find(u => u._id===userId) console.log(user) return user } async function updateUserById(userId,params) { const user=users.find(u=>u._id===userId) if(params.name)user.name=params.name if(params.age)user.age=params.age return user } module.exports={ model:users, createANewUser, getUsers, getUserById, updateUserById }

  2.在routes新建users.js路由完成使用者的增查改功能

const express = require('express');
const router = express.Router();
const Users=require('../models/in_memo/users')

/* GET users listing. */
router.route('/')
    .get((req, res, next) => {
        (async()=>{
            const users=await Users.getUsers()
            return {
                code:0,
                users:users
            }
        })()
            .then((r)=>{
              res.json(r)
            })
            .catch((e)=>{
              next(e)
            })
    })
    .post((req,res,next)=>{
        (async()=>{
            const user=await Users.createANewUser({
                name:req.body.name,
                age:req.body.age
            })
            return {
                code:0,
                user:user
            }
        })()
            .then((r)=>{
                res.json(r)
            })
            .catch((e)=>{
                next(e)
            })
    });

router.route('/:id')
    .get((req,res,next)=>{
        (async()=>{
            const user=await Users.getUserById(Number(req.params.id))
            return {
                code:0,
                user:user
            }
        })()
            .then((r)=>{
                res.json(r)
            })
            .catch((e)=>{
                next(e)
            })
    })
    .patch((req,res,next)=>{
        (async ()=>{
           const user=await Users.updateUserById(Number(req.params.id),{
               name:req.body.name,
               age:req.body.age
           })
            return {
               code:0,
                user:user
            }
        })()
            .then(r=>{
                res.json(r)
            })
            .catch(e=>{
                next(e)
            })
    })

module.exports = router;

  3.最後加路由掛載到app.js上即可

  這樣,就完成了簡單的使用者的增改查功能了,啟動專案後,我們可通過postman完成專案功能的測試。

  建立新使用者截圖:

  獲取使用者截圖:

總結

  這樣,我們就可以通過express框架完成對使用者的增改查功能了,後續會將完整程式碼上傳到GitHub上,也將新增mongoose資料庫的應用。也希望有大佬指出缺漏或錯誤的,謝謝。