前言

  距上次更新博客又两个月多了,这两个月内除了上班时间忙公司的项目外,下班后也没有闲着,做了点外包,有小程序的,管理端的项目。也可能那段时间做的外包项目也都比较急,所以晚上都搞到一点左右睡,严重的压榨了自己的休息时间,搞得缓了很久才恢复过来。当然,也发现了忙外包的好处和坏处了,好处就可以多了些项目经验,例如小程序的做的是音视频类的教育应用,也算了解了一些公司项目不需要用到的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数据库的应用。也希望有大佬指出缺漏或错误的,谢谢。

  

Node.js系列-express(下)的更多相关文章

  1. Node.js系列-express(上)

    前言 Node.js系列的第一篇:http,大概描述了通过使用node.js内置的api创建一个服务并监听request实现简单的增删改查.现在,我们就通过通读express官网及使用express框 ...

  2. Node.js、express、mongodb 入门(基于easyui datagrid增删改查)

    前言 从在本机(win8.1)环境安装相关环境到做完这个demo大概不到两周时间,刚开始只是在本机安装环境并没有敲个Demo,从周末开始断断续续的想写一个,按照惯性思维就写一个增删改查吧,一方面是体验 ...

  3. node.js和express.js安装和使用步骤 [windows]

    PS: NODEJS:https://nodejs.org NPM:https://www.npmjs.com/ 一.node.js安装与配置 到https://nodejs.org/en/downl ...

  4. Node.js基于Express框架搭建一个简单的注册登录Web功能

    这个小应用使用到了node.js  bootstrap  express  以及数据库的操作 :使用mongoose对象模型来操作 mongodb 如果没了解过的可以先去基本了解一下相关概念~ 首先注 ...

  5. node.js系列笔记之node.js初识《一》

    node.js系列笔记之node.js初识<一> 一:环境说明 1.1 Linux系统CentOS 5.8 1.2 nodejs v0.10.15 1.3 nodejs源码下载地址 htt ...

  6. Node.js系列-http

    前言: 最近一直忙着公司项目的事,战友们的留言也没空回复,博客也有段时间没有更新了,年底了就是一个的忙啊~~~(ps:同感的也给个赞吧) 现在前端的就是一直地更新一直有新的东西出来,什么ES2015, ...

  7. node.js使用express框架进行文件上传

    关于node.js使用express框架进行文件上传,主要来自于最近对Settings-Sync插件做的研究.目前的研究算是取得的比较好的进展.Settings-Sync中通过快捷键上传文件,其实主要 ...

  8. node.js之express框架

    之前学习过node.js接触过express框架,最近为了编写一个mock server正好用到了express.下面正好就跟大家介绍一下关于express.今天的内容主要围绕这么几个方面? expr ...

  9. node.js中express模块创建服务器和http模块客户端发请求

    首先下载express模块,命令行输入 npm install express 1.node.js中express模块创建服务端 在js代码同文件位置新建一个文件夹(www_root),里面存放网页文 ...

随机推荐

  1. 洗礼灵魂,修炼python(50)--爬虫篇—基础认识

    爬虫 1.什么是爬虫 爬虫就是昆虫一类的其中一个爬行物种,擅长爬行. 哈哈,开玩笑,在编程里,爬虫其实全名叫网络爬虫,网络爬虫,又被称为网页蜘蛛,网络机器人,在FOAF社区中间,更经常的称为网页追逐者 ...

  2. python第二十二天-----在做作业当中............

    作业 1, ATM:模拟实现一个ATM + 购物商城程序 额度 自定义实现购物商城,买东西加入 购物车,调用信用卡接口结账可以提现,手续费5%支持多账户登录支持账户间转账记录每月日常消费流水提供还款接 ...

  3. C#操作Exchange配置

    1.客户端配置:运行gpedit.msc进入本地组策略管理器,计算机配置>管理模版>Windows组件>WinRM>WinRM客户端启用允许未加密通信:启用受信任的主机并添加e ...

  4. Linux运维面试题之--网页打开缓慢如何优化

    服务器负载过高或者网页打开缓慢,简单说说你的优化思路 ? 首先我们要发现问题的过程,通过操作系统,数据库,程序设计,硬件角度四个维度找到问题所在 找到瓶颈点的位置 制定好优化方案,形成处理问题的体系 ...

  5. Sudoku 个人项目1

    Github项目地址:Github 项目相关要求 随机构造出N个不重复的已解答的数独棋盘(0 < N <= 1000000) 在生成数独矩阵时,左上角的第一个数为:(学号后两位相加)% 9 ...

  6. element-ui使用导航栏跳转路由用法

    element-ui使用导航栏跳转路由用法 最近初学vue,试着做一个小项目熟悉语法与思想,其中使用elemen-ui的导航栏做路由跳转切换页面.下面记录一下学习过程 element-ui引入vue项 ...

  7. 控件_TimePicker

    import android.app.Activity; import android.os.Bundle; import android.view.View; import android.view ...

  8. python之面向对象进阶

    接口类 抽象类 钻石继承 多态 鸭子类型 接口类 接口类 继承有两种用途: 一:继承基类的方法,并且做出自己的改变或者扩展(代码重用) 二:声明某个子类兼容于某基类,定义一个接口类Interface, ...

  9. python第五十课——多态性

    animal.py class Animal: def __init__(self,name): self.name = name def eat(self): pass dog.py from an ...

  10. centos7下安装docker(12.1bridge网络)

    容器默认使用的时bridge网络 docker安装时会创建一个 命令为docker0的linux bridge.如果不指定--network=,运行的容器会默认挂到docker0上 interface ...