# NodejsAPI **Repository Path**: BDNF/nodejs-api ## Basic Information - **Project Name**: NodejsAPI - **Description**: 学习Nodejs开发后端接口 - **Primary Language**: Unknown - **License**: MIT - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2024-11-04 - **Last Updated**: 2024-11-30 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README ## Node.js API 项目使用了 Node.js + Express + MySQL + Sequelize ORM 开发。 ## 配置环境变量 将`.env.example`文件拷贝为`.env`文件,并修改配置。 ```txt NODE_ENV=development PORT=3000 SECRET=你的秘钥 ALIYUN_ACCESS_KEY_ID=阿里云的 AccessKey ID ALIYUN_ACCESS_KEY_SECRET=阿里云的 AccessKey Secret ALIYUN_BUCKET=阿里云 OSS 的 Bucket 名称 ALIYUN_REGION=阿里云 OSS Bucket 所在地域名称 MAILER_HOST=邮件服务器地址 MAILER_PORT=邮件服务器端口 MAILER_SECURE=465端口填写:true,否则填写:false MAILER_USER=你的邮箱地址 MAILER_PASS=你的邮箱授权码或密码 RABBITMQ_URL= ``` - `NODE_ENV`配置为开发环境,如部署在生产环境可改为`production`。 - `PORT`配置为服务端口 - `SECRET`配置为秘钥。 - `ALIYUN`开头的配置,均为阿里云的配置。请注册阿里云云账号,创建存储空间,并创建`Access Key`。 - `MAILER`开头的配置,为邮件服务器的配置。 - `RABBITMQ_URL`配置为 RabbitMQ 消息队列服务器地址。 ## 生成秘钥 在命令行中运行 ```shell node ``` 进入交互模式后,运行 ```shell const crypto = require('crypto'); console.log(crypto.randomBytes(32).toString('hex')); ``` 复制得到的秘钥,并填写到`.env`文件中的`SECRET`配置。 > PS:可以使用 `ctrl + c` 退出交互模式。 ## 配置数据库 项目使用 Docker 容器运行 MySQL 数据库。安装好 Docker 后,可直接启动 MySQL。 ```shell docker-compose up -d ``` 如需使用自行安装的 MySQL,需要修改`config/config.js`文件中的数据库用户名与密码。 ```json { "development": { "username": "您的数据库用户名", "password": "您的数据库密码" } } ``` ## 项目创建步骤 ```shell # 安装 express-generator(once) 1. npm install -g express-generator@4 # 创建 Node.js 项目 2. express --no-view 项目名 # 安装项目依赖包 3. npm install # 安装 nodemon 热更新 4. npm install -g nodemon # 启动 nodemon 5. 修改 package.json 文件 "start": "nodemon ./bin/www" # 安装 sequelize-cli(once) 6. npm i -g sequelize-cli # 初始化 sequelize 项目 7. npx sequelize init # 安装数据库驱动 8. npm i mysql2 安装 mysql2 # 修改数据库配置 9. 修改 config/config.json 文件 # 删除视图文件 10. 删除 public/index.html 文件 # 启动服务 11. npm start # 访问地址 12. 通过 [http://localhost:3000](http://localhost:3000) ``` ## 初始管理员账号 ```txt 账号:root 密码: 123123 ``` ## 接口文档 ```txt 访问地址:[https://apifox.com/apidoc/shared-db092240-8e8e-401e-9842-272e8d860d81/228985245e0](https://apifox.com/apidoc/shared-db092240-8e8e-401e-9842-272e8d860d81/228985245e0) ``` ## Sequelize ORM 配置文件 1. 创建模型命令 sequelize model:generate --name User --attributes name:string,age:integer 2. 运行迁移命令 sequelize db:migrate 3. 创建种子命令 sequelize seed:generate --name user 4. 运行种子命令 sequelize db:seed --seed xxx-user(运行所有种子:sequelize db:seed:all) - config:是配置的意思,这里放的也就是 sequelize 所需要的连接数据库的配置文件。 - migrations:是迁移的意思,如果你需要对数据库做新增表、修改字段、删除表等等操作,就需要在这里添加迁移文件了。而不是像以前那样,使用客户端软件来直接操作数据库。 - models:这里面存放的是模型文件,当我们使用 sequelize 来执行增删改查时,就需要用这里的模型文件了。每个模型都对应数据库中的一张表。 - seeders,是存放的种子文件。一般会将一些需要添加到数据表的测试数据存在这里。只需要运行一个命令,数据表中就会自动填充进一些用来测试内容的了。 ## 模型与表的单复数 - 模型代表的是单个对象的实例,所以模型名一般使用单数。 - 数据表里,因为要存在很多数据,所以一般使用复数。