add express-async-handler

This commit is contained in:
juzeon 2021-07-31 11:04:10 +08:00
父節點 22dc49adcc
當前提交 e2e1f373c2
共有 4 個檔案被更改,包括 17 行新增13 行删除

查看文件

@ -24,6 +24,7 @@
"cors": "^2.8.5", "cors": "^2.8.5",
"dotenv": "^10.0.0", "dotenv": "^10.0.0",
"express": "^4.17.1", "express": "^4.17.1",
"express-async-handler": "^1.1.4",
"express-jwt": "^6.0.0", "express-jwt": "^6.0.0",
"express-validator": "^6.12.1", "express-validator": "^6.12.1",
"jsonwebtoken": "^8.5.1", "jsonwebtoken": "^8.5.1",

查看文件

@ -6,6 +6,7 @@ import {body, param, query} from "express-validator"
import {Container} from "typedi" import {Container} from "typedi"
import {AdminService} from "../services/admin-service" import {AdminService} from "../services/admin-service"
import {PostModel} from "../models/post-model" import {PostModel} from "../models/post-model"
import expressAsyncHandler from "express-async-handler"
let adminService = Container.get(AdminService) let adminService = Container.get(AdminService)
let postModel = Container.get(PostModel) let postModel = Container.get(PostModel)
@ -20,10 +21,10 @@ adminRouter.use((req: express.Request, res: express.Response, next) => {
adminRouter.get('/list/:status', adminRouter.get('/list/:status',
param('status').isIn([1, 2, 3]).withMessage('Post状态仅支援1,2,3'), param('status').isIn([1, 2, 3]).withMessage('Post状态仅支援1,2,3'),
query('page').default(1).isInt({min: 1}).withMessage('页码必须>=1'), query('page').default(1).isInt({min: 1}).withMessage('页码必须>=1'),
async (req: express.Request, res: express.Response) => { expressAsyncHandler(async (req: express.Request, res: express.Response) => {
if (hasValidationErrors(req, res)) return if (hasValidationErrors(req, res)) return
res.json(await adminService.list(req.params.status as any as TPostStatus, req.query.page as any as number)) res.json(await adminService.list(req.params.status as any as TPostStatus, req.query.page as any as number))
} })
) )
adminRouter.post('/setStatus', adminRouter.post('/setStatus',
body('id').isInt().bail().custom(async input => { body('id').isInt().bail().custom(async input => {
@ -33,10 +34,10 @@ adminRouter.post('/setStatus',
} }
}), }),
body('status').isIn([1, 2, 3]).withMessage('Post状态仅支援1,2,3'), body('status').isIn([1, 2, 3]).withMessage('Post状态仅支援1,2,3'),
async (req: express.Request, res: express.Response) => { expressAsyncHandler(async (req: express.Request, res: express.Response) => {
if (hasValidationErrors(req, res)) return if (hasValidationErrors(req, res)) return
res.json(await adminService.setStatus(req.body.id, req.body.status)) res.json(await adminService.setStatus(req.body.id, req.body.status))
} })
) )
export {adminRouter} export {adminRouter}

查看文件

@ -6,6 +6,7 @@ import {body, oneOf, query} from "express-validator"
import * as Validator from "validator" import * as Validator from "validator"
import {hasValidationErrors} from "../includes" import {hasValidationErrors} from "../includes"
import {JWTUserPayload} from "../types" import {JWTUserPayload} from "../types"
import expressAsyncHandler from "express-async-handler"
let postService = Container.get(PostService) let postService = Container.get(PostService)
@ -18,17 +19,17 @@ postRouter.post('/submit',
body('content').optional().notEmpty().withMessage('请输入内容') body('content').optional().notEmpty().withMessage('请输入内容')
.escape(), .escape(),
body('image').optional().isURL({host_whitelist: [/.*\.360buyimg\.com/]}).withMessage('仅支援*.360buyimg.com下的图片'), body('image').optional().isURL({host_whitelist: [/.*\.360buyimg\.com/]}).withMessage('仅支援*.360buyimg.com下的图片'),
async (req: express.Request, res: express.Response) => { expressAsyncHandler(async (req: express.Request, res: express.Response) => {
if (hasValidationErrors(req, res)) return if (hasValidationErrors(req, res)) return
res.json(await postService.submit(req.user as JWTUserPayload, req.body.content, req.body.image)) res.json(await postService.submit(req.user as JWTUserPayload, req.body.content, req.body.image))
} })
) )
postRouter.get('/listPublished', postRouter.get('/listPublished',
query('page').default(1).isInt({min: 1}).withMessage('页码必须>=1'), query('page').default(1).isInt({min: 1}).withMessage('页码必须>=1'),
async (req: express.Request, res: express.Response) => { expressAsyncHandler(async (req: express.Request, res: express.Response) => {
if (hasValidationErrors(req, res)) return if (hasValidationErrors(req, res)) return
res.json(await postService.listPublished(req.query.page as any as number)) res.json(await postService.listPublished(Number(req.query.page)))
} })
) )
export {postRouter} export {postRouter}

查看文件

@ -5,6 +5,7 @@ import {UserService} from "../services/user-service"
import {body, validationResult,} from "express-validator" import {body, validationResult,} from "express-validator"
import {hasValidationErrors} from "../includes" import {hasValidationErrors} from "../includes"
import {JWTUserPayload} from "../types" import {JWTUserPayload} from "../types"
import expressAsyncHandler from "express-async-handler"
let userService = Container.get(UserService) let userService = Container.get(UserService)
@ -12,13 +13,13 @@ let userRouter = express.Router()
userRouter.post('/login', userRouter.post('/login',
body('username').notEmpty().withMessage('请输入使用者名称'), body('username').notEmpty().withMessage('请输入使用者名称'),
body('password').notEmpty().withMessage('请输入密码'), body('password').notEmpty().withMessage('请输入密码'),
async (req: express.Request, res: express.Response) => { expressAsyncHandler(async (req: express.Request, res: express.Response) => {
if (hasValidationErrors(req, res)) return if (hasValidationErrors(req, res)) return
res.json(await userService.login(req.body.username, req.body.password)) res.json(await userService.login(req.body.username, req.body.password))
} })
) )
userRouter.get('/me',async (req:express.Request,res:express.Response)=>{ userRouter.get('/me',expressAsyncHandler(async (req:express.Request,res:express.Response)=>{
res.json(await userService.me(req.user as JWTUserPayload)) res.json(await userService.me(req.user as JWTUserPayload))
}) }))
export {userRouter} export {userRouter}