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

手机网站建设软件百度竞价被换着ip点击

手机网站建设软件,百度竞价被换着ip点击,保定移动网站建设,做网站软件下载前言 必须全局安装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/415483.html

相关文章:

  • 易语言可以做api网站对接吗百度搜索网页
  • 公司做网站一般多少钱运营软文写作服务
  • 建设景区网站的目的如何提高百度关键词排名
  • 网站不备案行吗百度seo软件曝光行者seo
  • 网站怎么做英语和中文的友情视频
  • css网站做光晕效果百度网址大全免费下载
  • wordpress摘要 字数seo新人怎么发外链
  • 为什么登录不上建设银行网站谷歌推广开户多少费用
  • 公司营销型网站开发如何做网络推广
  • 徐州市住房和城乡建设局网站首页百青藤广告联盟
  • 京东商城网站wordpress模板郴州网站建设网络推广渠道
  • 怎么用ps做网站幻灯片新媒体营销
  • wordpress 表单录入东莞seo快速排名
  • 鄱阳网站建设seo标签优化方法
  • 网站建设属于网络还是软件无锡网站建设公司
  • 苏州大写的网站建设google推广有效果吗
  • 自己做网站导航深圳专业建站公司
  • 广告公司简介免费福州百度网站快速优化
  • wordpress站点如何适应手机广告投放代理商加盟
  • 网站建设基本流程包括哪几个步骤b2b
  • 校园品牌推广方案应用宝aso优化
  • 笔记本做网站要什么好百度sem认证
  • 网站建设的发展by网站域名
  • 中国做本地服务好的网站怎么发布信息到百度
  • 大连做网站的企业百度云搜索引擎官网入口
  • 如何做网站的百科青岛seo
  • cpa单页网站怎么做长春网站制作计划
  • 苏州建设网站首页百度seo哪家公司好
  • 湖南厦门网站优化自己怎么优化网站
  • 个人可以做医疗信息网站吗产品市场推广计划书