Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/linxiaowu66/doumi-wedding-memory
a wedding memory site from 2015, now refactor it with nest.js + jquery
https://github.com/linxiaowu66/doumi-wedding-memory
drizzle-orm nestjs wedding-website
Last synced: about 6 hours ago
JSON representation
a wedding memory site from 2015, now refactor it with nest.js + jquery
- Host: GitHub
- URL: https://github.com/linxiaowu66/doumi-wedding-memory
- Owner: linxiaowu66
- Created: 2024-05-09T06:51:55.000Z (6 months ago)
- Default Branch: main
- Last Pushed: 2024-06-28T08:21:39.000Z (5 months ago)
- Last Synced: 2024-06-28T09:43:10.007Z (5 months ago)
- Topics: drizzle-orm, nestjs, wedding-website
- Language: EJS
- Homepage: https://5udou.cn
- Size: 10.9 MB
- Stars: 1
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# 豆米婚礼纪念网站
旧版的豆米婚礼纪念网站是在2015年开发的,那会使用了`Sailjs`作为后端框架,以及`jquery`+`bootstrap`的前端组合。
考虑到用的`Sailjs`目前已经很少用了,于是这次直接将其改造成`Nest.js`,并优化修复了一些问题,前端方面没打算修改,继续用着之前
的那些古老的工具包。整个项目作为实验性质,因此用了一些比较新的库:
* drizzle:对接Mysql数据库(试试这个新的orm仓库,体验下来,类型上和开发上还不错,就是有个时间戳的问题,比较麻烦)
* winston:用于做日志打印
* express-xss-sanitizer:防止XSS;
* awesome-js:做敏感词过滤,杜绝输入任何敏感词汇## 开发
* 先安装包:`pnpm i`
* 初始化本地MYSQL数据库;
```sql
create database douMiWedding CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;use mysql;
CREATE USER 'test123'@'%' IDENTIFIED BY 'test123';
GRANT ALL ON douMiWedding.* TO 'test123'@'%';
FLUSH PRIVILEGES;
CREATE TABLE `Blessing` ( `id` serial AUTO_INCREMENT NOT NULL, `nickname` varchar(128) DEFAULT '匿名用户', `advice` varchar(512), `blessing` varchar(512), `createDate` datetime(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3), CONSTRAINT `Blessing_id` PRIMARY KEY(`id`), CONSTRAINT `Blessing_nickname_unique` UNIQUE(`nickname`) );
```> 如果schema.ts写好之后,可以借助drizzle的工具生成对应的sql:`./node_modules/.bin/drizzle-kit generate:mysql`
* 启动:`pnpm start:dev`;
* 打开浏览器:`http://localhost:3000`;
## 开发遇到的问题
* [x] `ejs`使用了layout的功能,最后使用`express-ejs-layouts`解决了问题,这个包默认会在`views`目录下找`layout`文件,所以不用像网上说的那样还需要设置`app.use`。注意这个包只能使用`require`引入,否则会报错;
* [x] `drizzel`的时间戳设置问题,我如果在createdAt使用mysql的`default(CURRENT_TIMESTAMP)`,会设置进去包含时区的时间戳,但是读回来的时候确实UTC的,导致时间多了8小时,暂时没找到解法,目前我自己强制传`new Date`过去## 部署
* 全局安装pm2:
```shell
pm2 start --name doumiwedding pnpm -- start:prod
```> 部署相关文章参考博客:
## 待办
* [x] 暂无;