Desarrollo de Node.js: mysql2+typeorm --- el camino al foso (3)

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.

Supongo que te gusta

Origin blog.csdn.net/qq_31808899/article/details/80569517
Recomendado
Clasificación