La gente realmente tiene un pensamiento perezoso.
Una vez que estás perezoso durante dos días (sábado, domingo), olvidas lo que quieres hacer
Así que ir a trabajar es realmente una existencia alegre.
----------------------------------------------------------------
proceso:
Estructura de directorios:
Entre ellos, la entidad almacena la entidad, dao almacena el procesamiento de la tabla e index.ts se conecta a la base de datos.
La base de datos usa mysql
Función: crear una tabla de usuario y agregar datos a la tabla de usuario
1. Dependencias de instalación
npm install typeorm --save
npm install reflect-metadata --save
npm install mysql2
2. Conéctese a la base de datos (index.ts)
import { createConnection } from 'typeorm'
import * as dao from './dao/index'
// const Typeorm = require('typeorm')
export const dbInit = async (app) => {
createConnection({
type: 'mysql', // 数据库类型
host: '127.0.0.1', // 数据库地址
port: 3306, // 数据库端口号
username: 'root', // 数据库用户名
password: 'root', // 密码
database: 'node', // 数据库名
entities: [ __dirname + '/entity/*.ts', 'dist/data/entity/*.js'], // 引入实体
synchronize: true,
}).then((conn: any) => {
console.log('数据库连接成功')
app.listen(3000)
dao.UserDao.addUser() // 调用方法-添加用户
console.log('应用启动成功')
return true
}).catch((error: any) => {
console.log('应用启动失败')
console.log(error)
return false
})
}
3. Llame para conectarse a la base de datos (app.ts)
import * as Koa from 'koa' // 用了koa框架
import { dbInit } from './data'
const app = new Koa()
dbInit(app)
Después de reiniciar el proyecto, la consola mostrará "conexión a la base de datos exitosa" e "inicio de la aplicación exitoso"
4. Crear clase de entidad de usuario (entity/user.ts)
import {Entity, Column, PrimaryGeneratedColumn} from 'typeorm'
@Entity()
export default class User {
@PrimaryGeneratedColumn() // 主键自增
id: number = 1;
@Column()
username: string = '';
@Column()
password: string = '';
}
Después de reiniciar el proyecto, observe la base de datos y se generará la tabla de usuario
5. Agregar datos a la base de datos (dao/user.ts)
import {getManager} from "typeorm"
import User from '../entity/User'
export const UserDao = {
addUser: async () => {
const entityManager = getManager()
let user = new User()
user.username = 'admin'
user.password = 'admin'
return await entityManager.save(User, user) // user表中插入数据
},
updateUser: async () => {
const entityManager = getManager()
return await entityManager.update(User, {username: 'admin'}, {password: 'admin'}) // user表中更新数据
},
delUser: async () => {
const entityManager = getManager()
return await entityManager.delete(User, {username: 'admin'}) // user表中删除数据
},
findUser: async () => {
const entityManager = getManager()
return await entityManager.find(User, {username: 'admin'}) // user表中查找数据
}
}
Observe el paso 2, después de conectarse con éxito a la base de datos, se llama al método de agregar usuarios.
dao.UserDao.addUser() // 调用方法-添加用户
Paso en el hoyo:
1. Typescript no admite la importación y exportación, lo que genera un error
app.ts: A namespace-style import cannot be called or constructed, and will cause a failure at runtime. (7038)
app.ts (4,13): Cannot use 'new' with an expression whose type lacks a call or construct signature. (2351)
Observe tsconfig.json
"esModuleInterop": true // 实现CommonJS和ES模块之间的互操作性
Coméntalo o configúralo como falso
2. A la variable no se le asigna un valor inicial, resultando en un error
User.ts(6,13): error TS2564: Property 'id' has no initializer and is not definitely assigned in the constructor.
User.ts(9,13): error TS2564: Property 'username' has no initializer and is not definitely assigned in the constructor.
User.ts(12,13): error TS2564: Property 'password' has no initializer and is not definitely assigned in the constructor.
resolver:
----------------------------------------------------------------
Siento que he estado tomando fotos de gatos y tigres.
No parece nada constructivo.
Me temo que he estado un poco impetuoso últimamente~
Acerca de muchos métodos de procesamiento de bases de datos encapsuladas en typeorm
Si tienes tiempo, deberías arreglarlo.