This commit is contained in:
iVampireSP.com 2023-10-24 14:27:28 +08:00
parent d5c8f3ff52
commit 3f28963e1e
No known key found for this signature in database
GPG Key ID: 2F7B001CA27A8132
9 changed files with 73 additions and 39 deletions

View File

@ -1,4 +1,3 @@
DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=auth

4
.gitignore vendored
View File

@ -3,4 +3,6 @@
node_modules/
build/
tmp/
temp/
temp/
yarn.lock
ormconfig.json

View File

@ -3,5 +3,5 @@
Steps to run this project:
1. Run `npm i` command
2. Setup database settings inside `data-source.ts` file
2. Setup database settings inside `database.ts` file
3. Run `npm start` command

16
main.ts
View File

@ -1,21 +1,7 @@
import express from 'express';
import logger from 'morgan'
import path from 'path'
const app = express();
import fs from 'fs'
import dotenv from 'dotenv'
// 检测运行目录下是否有 .env 文件,如果没有,则创建
const envPath = path.resolve(__dirname, '.env')
if (!fs.existsSync(envPath)) {
fs.writeFileSync(envPath, '')
// log
console.log('create .env file')
}
// 加载 .env 文件
dotenv.config()
console.log(process.env)
import indexRouter from './src/routes/index'
import usersRouter from './src/routes/users'

View File

@ -6,7 +6,7 @@
"dependencies": {
"express": "^4.18.2",
"morgan": "^1.10.0",
"mysql": "^2.14.1",
"mysql2": "^3.6.2",
"path": "^0.12.7",
"reflect-metadata": "^0.1.13",
"typeorm": "0.3.17"
@ -19,7 +19,7 @@
"typescript": "4.5.2"
},
"scripts": {
"start": "ts-node src/config/index.ts",
"start": "ts-node main.ts",
"typeorm": "typeorm-ts-node-commonjs"
}
}
}

View File

@ -1,17 +0,0 @@
import "reflect-metadata"
import { DataSource } from "typeorm"
import { User } from "../entity/User"
export const AppDataSource = new DataSource({
type: "mysql",
host: "localhost",
port: 3306,
username: "test",
password: "test",
database: "test",
synchronize: true,
logging: false,
entities: [User],
migrations: [],
subscribers: [],
})

38
src/config/database.ts Normal file
View File

@ -0,0 +1,38 @@
import "reflect-metadata"
import { DataSource } from "typeorm"
// import { User } from "../entity/User"/
import "./env"
const options = {
type: "mysql",
host: process.env.DB_HOST,
port: Number(process.env.DB_PORT),
username: process.env.DB_USERNAME,
password: process.env.DB_PASSWORD,
database: process.env.DB_DATABASE,
synchronize: true,
logging: false,
// entities: [User],
entities: ["../entity/*.ts"],
migrations: ["../migration/*.ts"],
subscribers: [],
}
console.log(options)
export const AppDataSource = new DataSource({
type: "mysql",
host: process.env.DB_HOST,
port: Number(process.env.DB_PORT),
username: process.env.DB_USERNAME,
password: process.env.DB_PASSWORD,
database: process.env.DB_DATABASE,
synchronize: true,
logging: false,
// entities: [User],
entities: ["../entity/*.ts"],
migrations: ["../migration/*.ts"],
subscribers: [],
})

26
src/config/env.ts Normal file
View File

@ -0,0 +1,26 @@
import fs from 'fs'
import dotenv from 'dotenv'
let is_loaded = false
if (!is_loaded) {
// 检测运行目录下是否有 .env 文件,如果没有,则创建
const envPath = process.cwd()
console.log(envPath)
if (!fs.existsSync(envPath)) {
// 如果没有,则创建
if (!fs.existsSync(envPath)) {
console.log('create .env file at ' + envPath)
fs.writeFileSync(envPath, '')
}
}
// 加载 .env 文件
dotenv.config({
path: envPath + '/.env'
})
is_loaded = true
}

View File

@ -1,4 +1,4 @@
import { AppDataSource } from "./data-source"
import { AppDataSource } from "./database"
import { User } from "../entity/User"
AppDataSource.initialize().then(async () => {