改进 Express 模板

This commit is contained in:
iVampireSP.com 2023-10-24 15:39:10 +08:00
parent 466bc6a0c6
commit dd97d2bf95
No known key found for this signature in database
GPG Key ID: 2F7B001CA27A8132
13 changed files with 87 additions and 50 deletions

View File

@ -1,5 +1,7 @@
PORT=3000
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=auth
DB_DATABASE=test
DB_USERNAME=root
DB_PASSWORD=

View File

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

23
main.ts
View File

@ -1,21 +1,12 @@
import express from 'express';
import logger from 'morgan'
import './src/config/env'
const app = express();
import './src/routes/main'
import app from './src/config/express'
import indexRouter from './src/routes/index'
import usersRouter from './src/routes/users'
const port = process.env.PORT || 3000
app.use(logger('dev'));
app.use(express.json());
app.use(express.urlencoded({ extended: false }));
// app.use(express.static(path.join(__dirname, 'public')));
app.use('/', indexRouter);
app.use('/users', usersRouter);
let port = 3000
app.listen(port, () => {
console.log(`App listening on port ${port}`)
})
console.log(`Server is running at http://0.0.0.0:${port}`)
console.log(`You can visit http://localhost:${port}`)
console.log(`Press CTRL-C to stop \n`)
})

View File

@ -21,7 +21,7 @@
"scripts": {
"start": "ts-node main.ts",
"typeorm": "typeorm-ts-node-commonjs",
"migrate": "typeorm-ts-node-commonjs migration:run -d src/config/database.ts",
"migrate:rollback": "typeorm-ts-node-commonjs migration:revert -d src/config/database.ts"
"migrate": "typeorm-ts-node-commonjs migration:run -d src/config/typeorm.ts",
"migrate:rollback": "typeorm-ts-node-commonjs migration:revert -d src/config/typeorm.ts"
}
}

11
src/config/express.ts Normal file
View File

@ -0,0 +1,11 @@
import express from 'express';
import logger from 'morgan'
const app = express();
app.use(logger('dev'));
app.use(express.json());
app.use(express.urlencoded({ extended: false }));
export default app;

View File

@ -1,20 +0,0 @@
import { AppDataSource } from "./database"
import { User } from "../entity/User"
AppDataSource.initialize().then(async () => {
console.log("Inserting a new user into the database...")
const user = new User()
user.firstName = "Timber"
user.lastName = "Saw"
user.age = 25
await AppDataSource.manager.save(user)
console.log("Saved a new user with id: " + user.id)
console.log("Loading users from the database...")
const users = await AppDataSource.manager.find(User)
console.log("Loaded users: ", users)
console.log("Here you can setup and run express / fastify / any other framework.")
}).catch(error => console.log(error))

7
src/config/manager.ts Normal file
View File

@ -0,0 +1,7 @@
import typeorm from "./typeorm";
typeorm.initialize().then(async () => {
console.log("Datasource initialized.")
}).catch(error => console.log(error))
export default typeorm.manager

View File

@ -1,20 +1,21 @@
import "reflect-metadata"
import { DataSource } from "typeorm"
// import { User } from "../entity/User"/
import "./env"
export const AppDataSource = new DataSource({
const typeorm = 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,
synchronize: false,
logging: false,
// entities: [User],
entities: ["src/entity/*.ts"],
migrations: ["src/migration/*.ts"],
subscribers: [],
})
export default typeorm

29
src/controller/User.ts Normal file
View File

@ -0,0 +1,29 @@
import {Request, Response} from "express";
import {User} from "../entity/User";
import manager from "../config/manager";
class UserController {
public async index(request: Request, response: Response) {
const user = new User()
user.name = "Timber"
user.email = "Saw@test.test"
await manager.save(user)
user.name = "update"
await manager.save(user)
return response.json({
message: 'Hello World! From user'
})
}
public async create(request: Request, response: Response) {
return response.json({
message: 'Hello World! From user'
})
}
}
export default UserController

View File

@ -1,6 +1,7 @@
import { Entity, PrimaryGeneratedColumn, Column } from "typeorm"
@Entity()
@Entity("users")
export class User {
@PrimaryGeneratedColumn()

View File

@ -3,7 +3,11 @@ const router = Router()
/* GET home page. */
router.get('/', function(req, res, next) {
// res.render('index', { title: 'Express' });
// user
res.json({
message: 'Hello World!'
})

9
src/routes/main.ts Normal file
View File

@ -0,0 +1,9 @@
// 添加其他的路由文件
import app from "../config/express";
import indexRouter from "./index";
import usersRouter from "./users";
app.use('/', indexRouter);
app.use('/users', usersRouter);

View File

@ -1,9 +1,11 @@
import {Router} from 'express'
const router = Router()
import UserController from '../controller/User'
const user = new UserController()
/* GET users listing. */
router.get('/', function(req, res, next) {
res.send('respond with a resource');
});
router.get('/', user.index);
export default router