From 18ef80557dcffaa7358ee9119b5183243e96715d Mon Sep 17 00:00:00 2001 From: Kirigaya <1193466151@qq.com> Date: Fri, 18 Oct 2024 20:26:11 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BC=98=E5=8C=96=E4=BF=9D=E5=AD=98=E6=81=A2?= =?UTF-8?q?=E5=A4=8D=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/global.ts | 3 +++ src/main.ts | 20 +++----------------- src/save-view.ts | 27 +++++++++++++++++++++++++++ 3 files changed, 33 insertions(+), 17 deletions(-) create mode 100644 src/global.ts create mode 100644 src/save-view.ts diff --git a/src/global.ts b/src/global.ts new file mode 100644 index 0000000..40cd2b2 --- /dev/null +++ b/src/global.ts @@ -0,0 +1,3 @@ + +// 测试项目部署请看 README.md +export const rootPath = '../digital-vcd-render/public'; \ No newline at end of file diff --git a/src/main.ts b/src/main.ts index 7a8c404..4dd47ee 100644 --- a/src/main.ts +++ b/src/main.ts @@ -1,12 +1,11 @@ -import * as path from 'path'; -import * as fs from 'fs'; + import express, { Request, Response } from 'express'; import morgan from 'morgan'; import cors from 'cors'; import bodyParser from 'body-parser'; -import { BSON } from 'bson'; +import { saveView } from './save-view'; const corsOptions = { // 一些旧版浏览器(如 IE11、各种 SmartTV)在 204 状态下会有问题 @@ -21,25 +20,12 @@ app.use(bodyParser.json()); app.use(bodyParser.urlencoded({ extended: true })); app.use(morgan('dev')); -// 测试项目部署请看 README.md -const rootPath = '../digital-vcd-render/public'; app.get('/', (req: Request, res: Response) => { res.send('

Hello, World!


'); }); -app.post('/save-view', async (req: Request, res: Response) => { - try { - const { file, payload } = req.body; - const savePath = path.join(rootPath, file); - const buffer = BSON.serialize(payload); - fs.writeFileSync(savePath, buffer); - res.send('success'); - } catch (error) { - console.log('error happen in /save-view, ' + error); - res.send('error'); - } -}) +app.post('/save-view', saveView); const PORT = process.env.PORT || 3000; app.listen(PORT, () => { diff --git a/src/save-view.ts b/src/save-view.ts new file mode 100644 index 0000000..497003a --- /dev/null +++ b/src/save-view.ts @@ -0,0 +1,27 @@ +import { Request, Response } from 'express'; +import * as path from 'path'; +import * as fs from 'fs'; +import { BSON } from 'bson'; +import { rootPath } from './global'; + +const payloadCache = new Map(); + +export async function saveView(req: Request, res: Response) { + try { + const { file, payload } = req.body; + if (!payloadCache.has(file)) { + payloadCache.set(file, payload); + } + + const originPayload = payloadCache.get(file); + Object.assign(originPayload, payload); + + const savePath = path.join(rootPath, file); + const buffer = BSON.serialize(originPayload); + fs.writeFileSync(savePath, buffer); + res.send('success'); + } catch (error) { + console.log('error happen in /save-view, ' + error); + res.send('error'); + } +} \ No newline at end of file