当前位置: 首页 > wzjs >正文

成都网站seo诊断python建设网站实例

成都网站seo诊断,python建设网站实例,北京网站建设公司兴田德润专业,统一门户平台前言 必须全局安装typeorm命令 npm i typeorm -g使用typeorm初始化项目 通过这种方式默认会安装typeorm和ts相关的内容,以及实体类和控制器以及热更新操作 typeorm init --name MyProject --database mysql --express --module esm这里面的database还可以用其他数据…

前言

必须全局安装typeorm命令

npm i typeorm -g

使用typeorm初始化项目

通过这种方式默认会安装typeorm和ts相关的内容,以及实体类和控制器以及热更新操作

typeorm init --name MyProject --database mysql --express --module esm

这里面的database还可以用其他数据库

安装依赖

pnpm i

安装其他依赖

这个时候还需要安装其他依赖项

pnpm add routing-controllers 
pnpm add @types/express @types/body-parser -D

修改模板

删除原有文件的Controller和entity文件,删除route.ts文件

修改tsconfig.json

{"compilerOptions": {"lib": ["es2021"],"target": "es2021","module": "es2022","esModuleInterop": true,"moduleResolution": "node","allowSyntheticDefaultImports": true,"outDir": "./build","emitDecoratorMetadata": true,"experimentalDecorators": true,"sourceMap": true}
}

配置数据库

data-source.ts文件中

import "reflect-metadata"
import { DataSource } from "typeorm"export const dataSource = new DataSource({type: "mysql",host: "localhost",port: 3306,username: "root",password: "123456",database: "cjh_test",synchronize: true,logging: false,entities: ["entity/*.ts"],subscribers: ["subscriber/*.ts"],migrations: ["migration/*.ts"]
})

新增实体类(数据库映射)

在entity目录下新建Article.ts文件

import { Column, Entity, PrimaryGeneratedColumn } from "typeorm";@Entity('article')
export class Article{@PrimaryGeneratedColumn()id!: number//指定在数据库的实际名称@Column({name:'job_no'})jobNo!: string@Column()title!: string//指定在数据库中的类型@Column('text')content!: string@Column({ name: 'created_by' })createdBy!: string@Column({ type: 'date', name: 'created_at' })createdAt!: string@Column({ name: 'updated_by' })updatedBy!: string@Column({ type: 'date', name: 'updated_at' })updatedAt!: string}

这里我创建了一个Article实体类

推荐使用命令来创建一个空的实体类

typeorm entity:create src/entity/Article

新增服务层(操作数据库)

我们在src下创建一个service目录,并新建article.service.ts文件

/*** 文章服务类*/
import {dataSource} from '../data-source'
import { Article } from '../entity/Article'export class ArticleService {articleRepositoryconstructor() {this.articleRepository = dataSource.getRepository(Article)}// 查询全部文章async queryAllArticle() {return await this.articleRepository.findAndCount()}
}

新增控制层(业务层)

我们在src下的controller目录中,新建article.controller.ts文件

/*** 文章 controller*/
import { Controller, Get } from "routing-controllers";
import { ArticleService } from "../services/article.service.js";//公共前缀
@Controller("/article")
export class ArticleController {articleService;constructor() {this.articleService = new ArticleService();}//实际请求 /article/queryArticleList@Get("/queryArticleList")queryArticleList() {return this.articleService.queryAllArticle();}
}

修改入口文件

修改index.ts

import express from "express";
import bodyParser from "body-parser";
import { AppDataSource } from "./data-source.js";
import { ArticleController } from "./controller/article.controller.js";
import { BaseController } from "./controller/base.controller.js";
import { useExpressServer } from "routing-controllers";
const { json, urlencoded } = bodyParser;
function init() {AppDataSource.initialize().then(async () => {console.log("Data Source has been initialized!");}).catch((error) => console.log(error));const app = express();// body 解析相关中间件// 解析 json 格式app.use(json());// 解析 urlencoded body// 会在 request 对象上挂载 body 属性,包含解析后的数据。// 这个新的 body 对象包含 key-value 键值对,若设置 extended 为 true,则键值可以是任意累心个,否则只能是字符串或数组。app.use(urlencoded({ extended: true }));// 将当前实例注册到 routing-controllersuseExpressServer(app, {controllers: [BaseController, ArticleController],});app.listen(3000, () => {console.log(`  App is running at http://localhost:3000\n`);console.log("  Press CTRL-C to stop\n");});
}init();

补充一个初始控制器

import { Controller, Get } from "routing-controllers";@Controller('/')
export class BaseController {constructor() {}@Get('/')async index() {return 'hello world'}
}

运行

npm start

这个时候你会看到hello world

生成空白迁移文件模版并运行

这一步可以自动帮我们建表

创建迁移文件

typeorm migration:create src/migration/ArticleTable 
import { MigrationInterface, QueryRunner } from "typeorm";export class ArticleTable1748858082419 implements MigrationInterface {public async up(queryRunner: QueryRunner): Promise<void> {}public async down(queryRunner: QueryRunner): Promise<void> {}}

这样就会生成一份迁移文件,up就是更新数据,down就是删除数据

执行迁移文件

npx typeorm-ts-node-esm migration:run -d ./src/data-source.ts

回滚

typeorm migration:revert

使用验证模块

npm install class-validator --save

实体类生成迁移文件

这里我们根据实体类生成了迁移文件

"scripts": {"start": "node --loader ts-node/esm src/index.ts","typeorm": "typeorm-ts-node-esm","send": "node --loader ts-node/esm public/send.ts","receive": "node --loader ts-node/esm public/receive.ts"}
npm run typeorm -- migration:generate src/migration/SysLogsDefault -d ./src/data-source.ts

注意要点

必须显式的明确文件后缀

注意tsconfig.json文件 "esModuleInterop": true

执行迁移文件的时候,会记录一次迁移id,如果成功了,下一次就不会再执行迁移了

http://www.dtcms.com/wzjs/577559.html

相关文章:

  • 企业定制网站建设公司在线生成手机网站
  • 活动网站商城网站建设哪个公司好
  • 推荐自助建网站平台东莞百度推广教程
  • wordpress文章名称背景官方进一步优化
  • 全国的网站建设北京环保网站建设
  • 南宁网站设计方案网站建设怎么估算费用和报价
  • 韩国网站模板下载地址风险地区查询最新
  • 百度做网站价格邢台网站建设行情
  • 树莓派做网站服务器怎样网站设计计划书
  • 金华企业网站建站模板如何免费建设一个网站
  • 建设专业网站哪家比较好辽宁建设工程信息网补遗文件
  • 自己做soho需要做网站吗免费做什么代理最赚钱
  • 济南网站建设招聘唐山网架公司
  • 机械手表网站自己如何建一个网站
  • 益阳购物网站开发设计昔阳网站建设
  • 网站宽度980 在ipad上 左对齐了wordpress连续获取下一文章
  • 推销网站关键词优化如何做
  • 网站解决方案模板wordpress怎么清除缓存
  • 论坛网站有哪些深圳建网站哪
  • 横翻网站模版成都网站建设的定位
  • 龙溪网站建设哪家便宜html网页代码生成器
  • 您与此网站建立的连接不安全WaP网站模块
  • 网站建设怎么找客户徐州网站建设模板
  • 网站改自适应 做自适应仿 wordpress
  • 做的单页html怎么放网站wordpress 头像缓存到本地
  • 携程企业网站建设的思路找做网站的公司需要注意什么
  • 郑州公司做网站网站推广怎么做流量大
  • 怎么制作一个网站首页南昌专业的学校网站建设公司
  • 伊春网站优化儿童玩具网站建设实训报告
  • 无锡网站制作工作室河南郑州建设信息网