发帖路由
此提交包含在:
@@ -7,6 +7,7 @@ import {getPoolCreatingPromise} from "./includes"
|
||||
import expressJWT from 'express-jwt'
|
||||
import type {ErrorRequestHandler} from "express"
|
||||
import {IResultJson} from "./types"
|
||||
import {postRouter} from "./routers/post-router"
|
||||
|
||||
const app = express()
|
||||
|
||||
@@ -19,9 +20,9 @@ app.use(
|
||||
)
|
||||
const authErrorHandler: ErrorRequestHandler =
|
||||
(err,
|
||||
req
|
||||
, res
|
||||
, next) => {
|
||||
req,
|
||||
res,
|
||||
next) => {
|
||||
if (err.name == 'UnauthorizedError') {
|
||||
res.status(401).send(<IResultJson>{status: false, data: '使用者未登入'})
|
||||
}
|
||||
@@ -29,6 +30,7 @@ const authErrorHandler: ErrorRequestHandler =
|
||||
app.use(authErrorHandler)
|
||||
|
||||
app.use('/user', userRouter)
|
||||
app.use('/post',postRouter)
|
||||
|
||||
async function entrypoint() {
|
||||
await getPoolCreatingPromise()
|
||||
|
7
src/models/post-model.ts
一般檔案
7
src/models/post-model.ts
一般檔案
@@ -0,0 +1,7 @@
|
||||
import 'reflect-metadata'
|
||||
import {Service} from "typedi"
|
||||
|
||||
@Service()
|
||||
export class PostModel{
|
||||
|
||||
}
|
@@ -24,4 +24,17 @@ export class UserModel {
|
||||
role: user[0].role
|
||||
}
|
||||
}
|
||||
|
||||
async findUserById(id: number) {
|
||||
let user = await db.query('select * from users where id=?', [id])
|
||||
if (!user.length) {
|
||||
return null
|
||||
}
|
||||
return <IUser>{
|
||||
id: user[0].id,
|
||||
username: user[0].username,
|
||||
realName: user[0].realName,
|
||||
role: user[0].role
|
||||
}
|
||||
}
|
||||
}
|
||||
|
34
src/routers/post-router.ts
一般檔案
34
src/routers/post-router.ts
一般檔案
@@ -0,0 +1,34 @@
|
||||
import 'reflect-metadata'
|
||||
import {Container} from "typedi"
|
||||
import {PostService} from "../services/post-service"
|
||||
import express from "express"
|
||||
import {body} from "express-validator"
|
||||
import * as Validator from "validator"
|
||||
import {hasValidationErrors} from "../includes"
|
||||
|
||||
let postService = Container.get(PostService)
|
||||
|
||||
let postRouter = express.Router()
|
||||
postRouter.post('/submit',
|
||||
body('content').notEmpty().withMessage('请输入内容')
|
||||
.escape(),
|
||||
body('image').isJSON().withMessage('图片必须为JSON格式').bail().custom((input, {req}) => {
|
||||
let arr: string[] = JSON.parse(input)
|
||||
if(!arr.length){
|
||||
throw new Error('图片数量至少为1')
|
||||
}
|
||||
for (let url of arr) {
|
||||
if (!Validator.default.isURL(url, {host_whitelist: [/.*\.360buyimg\.com/]})) {
|
||||
throw new Error('必须是360buyimg.com下的图片')
|
||||
}
|
||||
}
|
||||
req.body.imageArr = arr
|
||||
return true
|
||||
}),
|
||||
(req: express.Request, res: express.Response) => {
|
||||
if (hasValidationErrors(req, res)) return
|
||||
res.json(postService.submit(req.body.content, req.body.imageArr))
|
||||
}
|
||||
)
|
||||
|
||||
export {postRouter}
|
10
src/services/post-service.ts
一般檔案
10
src/services/post-service.ts
一般檔案
@@ -0,0 +1,10 @@
|
||||
import 'reflect-metadata'
|
||||
import {Service} from "typedi"
|
||||
|
||||
@Service()
|
||||
export class PostService {
|
||||
async submit(content: string, imageArr: string[]) {
|
||||
console.log(content)
|
||||
console.log(imageArr)
|
||||
}
|
||||
}
|
@@ -50,10 +50,8 @@ export class UserService {
|
||||
return resultJson.success(token)
|
||||
}
|
||||
|
||||
async me(user: JWTUserPayload) {
|
||||
return resultJson.success({
|
||||
id: user.id,
|
||||
role: user.role
|
||||
})
|
||||
async me(jwtUserPayload: JWTUserPayload) {
|
||||
let user=await this.userModel.findUserById(jwtUserPayload.id)
|
||||
return resultJson.success(user)
|
||||
}
|
||||
}
|
||||
|
新增問題並參考
封鎖使用者