# node-coderhub **Repository Path**: javafdx/node-coderhub ## Basic Information - **Project Name**: node-coderhub - **Description**: No description available - **Primary Language**: NodeJS - **License**: MIT - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2022-05-15 - **Last Updated**: 2022-07-01 ## Categories & Tags **Categories**: Uncategorized **Tags**: Nodejs ## README #### 创建项目 npm init -y npm install koa npm install nodemon -D npm install koa-router npm install koa-bodyparser npm install mysql2 npm install jsonwebtoken 运行: npm start 读取.env 配置未文件的依赖 npm install dotenv #### 用户表 ``` CREATE TABLE IF NOT EXISTS `users`( id INT PRIMARY KEY AUTO_INCREMENT, name VARCHAR(20) NOT NULL UNIQUE, password VARCHAR(50) NOT NULL, createAt TIMESTAMP DEFAULT CURRENT_TIMESTAMP, updateAt TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP ); ``` #### 生成公钥,私钥 1. 使用 git bash 2. 输入:openssl 3. genrsa -out private.key 1024 4. rsa -in private.key -pubout -out public.key #### 动态表 ``` CREATE TABLE IF NOT EXISTS `moment`( id INT PRIMARY KEY AUTO_INCREMENT, content VARCHAR(1000) NOT NULL, user_id INT NOT NULL, createAt TIMESTAMP DEFAULT CURRENT_TIMESTAMP, updateAt TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, FOREIGN KEY(user_id) REFERENCES user(id) ); // 插入数据 ``` #### 评论表 ``` CREATE TABLE IF NOT EXISTS `comment`( id INT PRIMARY KEY AUTO_INCREMENT, content VARCHAR(1000) NOT NULL, moment_id INT NOT NULL, user_id INT NOT NULL, comment_id INT DEFAULT NULL, createAt TIMESTAMP DEFAULT CURRENT_TIMESTAMP, updateAt TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, FOREIGN KEY(moment_id) REFERENCES moment(id) ON DELETE CASCADE ON UPDATE CASCADE, FOREIGN KEY(user_id) REFERENCES user(id) ON DELETE CASCADE ON UPDATE CASCADE, FOREIGN KEY(comment_id) REFERENCES comment(id) ON DELETE CASCADE ON UPDATE CASCADE ); ``` ``` SELECT m.id id, m.content content, m.createAt createTime, m.updateAt updateTime, JSON_OBJECT('id', u.id, 'name', u.name) author, JSON_ARRAYAGG( JSON_OBJECT('id', c.id, 'content', c.content, 'commentId', c.comment_id, 'createTime', c.createAt, 'user', JSON_OBJECT('id', cu.id, 'name', cu.name)) ) comments FROM moment m -- LEFT JOIN user u ON m.user_id = u.id LEFT JOIN user u ON u.id = m.user_id LEFT JOIN comment c ON c.moment_id = m.id LEFT JOIN user cu ON c.user_id = cu.id WHERE m.id = 27; ``` #### 标签表 ``` CREATE TABLE IF NOT EXISTS `label`( id INT PRIMARY KEY AUTO_INCREMENT, name VARCHAR(10) NOT NULL UNIQUE, createAt TIMESTAMP DEFAULT CURRENT_TIMESTAMP, updateAt TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP ); CREATE TABLE IF NOT EXISTS `moment_label`( moment_id INT NOT NULL, label_id INT NOT NULL, createAt TIMESTAMP DEFAULT CURRENT_TIMESTAMP, updateAt TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, PRIMARY KEY(moment_id, label_id), FOREIGN KEY (moment_id) REFERENCES moment(id) ON DELETE CASCADE ON UPDATE CASCADE, FOREIGN KEY (label_id) REFERENCES label(id) ON DELETE CASCADE ON UPDATE CASCADE ); ``` ``` 动态标签--关系表 CREATE TABLE IF NOT EXISTS `moment_label`( moment_id INT NOT NULL, label_id INT NOT NULL, createAt TIMESTAMP DEFAULT CURRENT_TIMESTAMP, updateAt TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, PRIMARY KEY(moment_id, label_id), FOREIGN KEY (moment_id) REFERENCES moment(id) ON DELETE CASCADE ON UPDATE CASCADE, FOREIGN KEY (label_id) REFERENCES label(id) ON DELETE CASCADE ON UPDATE CASCADE ); ```