express 将 Router 实例模块化
为了更好的组织代码,将 Router 实例进行模块化,将 get / post 等快捷方式放在Router上,而不是 App 上,然后将该 Router 作为中间件,use 到 server.js 上。
如果像这样写:
res.send("");
});
productModule.get("/modules/:id", (req, res) => {
res.send("");
});
fruitRouter 实例写的会比较重复,这是个不好的做法,可能会因为输入错误而导致一些不必要的错误,可以通过下面的方法可以有效的避免重复录入:
- 使用 Router 的实例方法链式连接 get / post 等
- 在特定的路由上安装中间件
将 route('/modules') 的方法写在一起
productModule.route('/modules')
// get
.get((req, res) => {
productModel.find().then(module => {
res.json(module);
}).catch(err => {
res.status(500).json({ message: err.message })
});
})
// add
.post((req, res) => {
productModel.findOne({ moduleName: req.body.moduleName }).then((module) => {
if (module) {
return res.status(500).json({ moduleName: "moduleName 巳存在!" });
} else {
const moduleName = req.body.moduleName;
const moduleClassName = req.body.moduleClassName;
const newModule = new productModel({
moduleName,
moduleClassName
});
newModule.save().then(module => res.json(module)).catch(err => console.log(err));
}
})
})
将参数为 id 的另一个 route('/modules/:id') 写在一起
productModule.route('/modules/:id')
// update
.post((req, res) => {
const _id = `${req.params.id}`;
const updateData = req.body;
productModel.findByIdAndUpdate({ _id }, updateData, (err, module) => {
if (err) {
res.status(500).json({ error: err });
} else {
res.status(200).json(module)
}
})
})
// delete
.delete((req, res) => {
var id = `${req.params.id}`;
console.log(id)
productModel.findById({ _id: id }).then((id) => {
if (id) {
productModel.deleteOne({ _id: id }).then(module => res.status(200).json(module));
} else {
return res.status(400).json({ "_id": "id不存在" })
}
}).catch(err => {
console.log(err)
})
})
最后,将这个 Router 安装在 app
app.use('/api/product', require('./routes/api/productModule'));
以上这种模块化的路由是比较安全的做法,而且,在页面上不会看起来太乱。
express 将 Router 实例模块化的更多相关文章
- express.Router创建模块化路由
使用 app.route() 创建路由路径的链式路由句柄.由于路径在一个地方指定,这样做有助于创建模块化的路由,而且减少了代码冗余和拼写错误. 先放小实例: app.js var express = ...
- node.js中express的Router路由的使用
express中的Router作用就是为了方便我们更好的根据路由去分模块.避免将所有路由都写在入口文件中. 一.简单的使用Router const express = require('express ...
- nodejs+express+ejs+mongoose实例
nodejs+express+ejs+mongoose实例 nodejs学得异常痛苦,在这里将学的东西做一番整理,算是自我安慰吧.根据网上todo示例,用express和mongoose重写了部分代码 ...
- Express框架 --router/app.use
翻看去年自己记录的印象笔记,准备把笔记上的一些内容也同时更新到博客上,方便自己查看. 1.app.use和app.get的区别及解析 app.use(path,callback)中的callback既 ...
- (转)akka Router实例
通常在分布式任务调度系统中会有这样的需求:一组actor提供相同的服务,我们在调用任务的时候只需要选择其中一个actor进行处理即可. 其实这就是一个负载均衡或者说路由策略,akka作为一个高性能支持 ...
- Express极简实例
假设已创建一个Express工程,否则请参考express工程环境准备 修改app.js var express = require('express'); var app = express(); ...
- Python+Selenium 自动化实现实例-模块化调用
public 目录存一些公共模块,供用例调用.login.py 内容如下: # coding=utf-8 import time # login def login(driver): driver.f ...
- Node.js_ express.Router 路由器_模块化管理路由
路由器 express.Router 路由器 模块化管理 路由 基本使用: 路由模块 1. 引入 express const express = require('express'); 其他相关模块 ...
- express.Router
[express.Router] 1.可使用 express.Router 类创建模块化.可挂载的路由句柄.Router 实例是一个完整的中间件和路由系统,因此常称其为一个 “mini-app”. 下 ...
随机推荐
- Thymeleaf常用语法:数据延迟加载
在处理模板时,可以由模板逻辑决定是否加载数据,以提高性能.在Spring Boot控制器中设置数据时,使用LazyContextVariable可以实现这功能. 开发环境:IntelliJ IDEA ...
- 程序运行时间测试 - 使用libc 中 time 函数 实现秒级的运行时间检测
c 标准库中,有time 函数,可以返回 1970年1月1日 开始到现在的秒数,我们可以调用两次的时间差来计算程序运行时间: https://github.com/yaowenxu/Workplace ...
- jango rest-framework page_size更新
老项目是三年前写的, 这周的新项目要用上DRF的分页功能时,发现老的写法无效了. 于是看了一些文档,原来写法变了. https://blog.csdn.net/dqchouyang/article/d ...
- Codeforces Round #593 (Div. 2)
传送门 A. Stones 签到. B. Alice and the List of Presents 单独考虑每个数的贡献即可. 答案为\((2^{m}-1)^n\). C. Labs 构造就类似于 ...
- 踩坑---vue-cli搭建的项目中localhost不能访问
只需要在config文件夹里面的index.js文件里面的module.exports下面的dev中的 host:'localhost' 改为 host:'0.0.0.0' ,然后重启服务器
- jenkins报错:Problem accessing /jenkins/. Reason: HTTP ERROR 404
这是一个Jenkins的Bug.临时解决方法是:在浏览器中手工输入:http://<ip>:<port>.不要访问"/jenkins"这个路径.
- 第05组 Alpha事后诸葛亮
组长博客链接(2分) 组长博客链接 现代软件工程 项目Postmortem 模板(27分) 设想和目标(2分) 1.我们的软件要解决什么问题?是否定义得很清楚?是否对典型用户和典型场景有清晰的描述? ...
- windows golang安装golang.org/x/net text grpc
使用git # 吧$GOPATH替换成自己的GOPATH git clone https://github.com/golang/net.git $GOPATH\src\golang.org\x\ne ...
- Vue 修饰符once的方法使用
once:只执行一次 代码: <!doctype html> <html lang="en"> <head> <meta charset= ...
- Linux 小工具
1. 截图工具 shutter 安装 sudo add-apt-repository ppa:shutter/ppa sudo apt-get update sudo apt-get install ...