
typeorm
typeorm
crayon-shin-chan
这个作者很懒,什么都没留下…
展开
-
记一个 @nestjs/typeorm^8.1.4 版本不能获取.env选项问题
在 typeorm 中,本可以通过 .env文件来配置连接选项但是在升级到 @nestjs/typeorm^8.1.4 typeorm^0.3.7后,就去掉了这个功能可以使用 ConnectionOptionsReader 来解决ConnectionOptionsReader 会在内部加载各种配置文件...原创 2022-07-05 16:59:12 · 413 阅读 · 0 评论 -
记一个typeorm问题 Main alise is not set
1.简介typeorm使用findOne方法查询数据,报错 Main alise is not set2.解决打印发现传入findOne方法的参数有问题,并不是所需对象实际上传了数组进去原创 2022-02-23 09:45:44 · 254 阅读 · 0 评论 -
typeorm实战之SelectQueryBuilder使用
1.简介Repository的createQueryBuilder方法返回一个SelectQueryBuilder,用于构建查询,参数为Repository实体的别名/** * Repository is supposed to work with your entity objects. Find entities, insert, update, delete, etc. */export declare class Repository<Entity extends ...原创 2021-03-19 23:14:57 · 1025 阅读 · 0 评论 -
typeorm实战之findOne()方法
1.简介findOne()方法是查找数据库中的一条记录 /** * Finds first entity that matches given options. */ findOne(id?: string | number | Date | ObjectID, options?: FindOneOptions<Entity>): Promise<Entity | undefined>; /** * Finds...原创 2021-03-18 23:01:46 · 4488 阅读 · 0 评论 -
typeorm之MysqlDriver
src/driver/mysql/MysqlDriver.ts//Mysql数据库驱动类export class MysqlDriver implements Driver { //连接 connection: Connection; //mysql底层库的导出 mysql: any; //连接池,非复制模式 pool: any; //原创 2018-02-18 23:19:15 · 1573 阅读 · 0 评论 -
typeorm之MysqlQueryRunner
src/driver/mysql/MysqlQueryRunner.ts//Mysql的查询运行器,在一个单独的数据库连接中执行数据库操作//这里的数据库连接指的是底层连接,而不是typeorm的Connectionexport class MysqlQueryRunner implements QueryRunner { //驱动对象 driver: MysqlDrive...原创 2018-02-18 22:23:26 · 2919 阅读 · 0 评论 -
typeorm之subscriber
subscriberimport { EventSubscriber, EntitySubscriberInterface, InsertEvent, UpdateEvent, RemoveEvent } from 'typeorm'import { Bucket } from './Bucket'@EventSubscriber()export class BucketSubscri原创 2018-02-08 17:23:07 · 1070 阅读 · 1 评论 -
typeorm之Entity Listeners
Detect languageAfrikaansAlbanianArabicArmenianAzerbaijaniBasqueBelarusianBengaliBosnianBulgarianCatalanCebuanoChichewaChinese (Simplified)Chinese (Traditiona原创 2018-02-08 16:47:24 · 1309 阅读 · 0 评论 -
typeorm之BaseConnectionOptions
src/connection/BaseConnectionOptions.ts//基本连接选项接口,由特定数据库的连接选项实现export interface BaseConnectionOptions { //数据库类型,"mysql"| "postgres"|"mariadb"|"sqlite"|"cordova"|"sqljs"|"oracle"|"mssql"|"websql原创 2018-02-16 23:38:20 · 978 阅读 · 0 评论 -
typeorm装饰器之PrimaryGeneratedColumn
src/decorator/columns/PrimaryGeneratedColumn.ts//无参export function PrimaryGeneratedColumn(): Function;//带类型、名称、注解的选项export function PrimaryGeneratedColumn(options: PrimaryGeneratedColumnNumericOp...原创 2018-01-09 23:40:16 · 5558 阅读 · 0 评论 -
typeorm装饰器OneToOne之cascadeUpdate
使用OneToOne关系时,当更新实体时,可以级联更新关联实体属性,一般情况下,外键列不会更新,这里有一些问题:框架如何识别需要更新的实体,或者为需要插入的实体更新级联的方向,已经测试出插入级联只能由插入主表对象,级联插入从表对象1.默认情况:实体:import { Entity,PrimaryColumn,Column,OneToOne,JoinColumn} from 'typeorm'im...原创 2018-02-19 15:31:50 · 755 阅读 · 0 评论 -
typeorm装饰器OneToOne之cascadeRemove
使用OneToOne的cascadeRemove属性时,与其他级联一样,只有save方法可以触发级联效果,那么有以下几个问题:除了save方法,delete、remove方法能否触发?什么样的情况下会触发级联remove?级联的方向?1.默认选项实体:import { Entity,PrimaryColumn,Column,OneToOne,JoinColumn} from 'typeorm'i...原创 2018-02-19 15:56:05 · 573 阅读 · 0 评论 -
typeorm装饰器OneToOne之cascadeInsert
使用OneToOne关系时,typeorm框架的保存处理方式有一些要点:什么情况下会插入外键列,即实体对象之间的属性如何设置才会插入相关外键列,如user.post=post还是post.user=user什么情况下需要先保存主表对象,才能保存相关联的从表对象什么情况下可以直接保存从表对象,框架会先级联保存主表对象能否通过保存主表对象,级联保存相关联的从表对象这里Post实体对应主表,User实体...原创 2018-02-19 13:04:26 · 1444 阅读 · 0 评论 -
typeorm装饰器之OneToOne
src/decorator/relations/OneToOne.ts//第一个参数为返回关联类的函数,第二个参数为选项export function OneToOne(typeFunction: (type?: any) => ObjectType, options?: RelationOptions): Function;//第一个参数为返回关联类的函数,第二个参数为反向关联,第三个参原创 2018-01-10 00:13:32 · 1621 阅读 · 0 评论 -
typeorm装饰器OneToOne之onDelete
在mysql中,创建外键约束时,可以设置两个选项on update、on delete,他俩都有四个选项值。on delete:当取值为No Action或者Restrict时,则当在主表中删除对应记录时,首先检查该记录是否被从表外键引用,如果有则不允许删除。当取值为Cascade时,则当在主表中删除对应记录时,首先检查该记录是否被从表外键引用,如果有则先删除从表中原创 2018-02-20 00:53:58 · 1825 阅读 · 0 评论 -
typeorm装饰器OneToOne之eager与lazy
看到eager、lazy可能第一感觉这是一对反义词,但是这里其实说的是两个不同阶段的特性,先看源码注解: /** * Set this relation to be lazy. Note: lazy relations are promises. When you call them they return promise * which resolve rel原创 2018-02-20 01:29:44 · 1240 阅读 · 0 评论 -
typeorm之QueryBuilder
typeorm进行数据库操作最方便的是采用Repository,其中save、update、delete、remove等方法使用起来都很方便有时需要复杂sql操作时就需要使用QueryBuilder,比如子查询、左连接、右连接、内连接等1.获取QueryBuildercon.getRepository(User).createQueryBuilder('user')一般通过一个原创 2018-04-09 16:18:25 · 7404 阅读 · 0 评论 -
typeorm核心之Connection类
//连接是否已初始化,是否已与数据库连接上 readonly isConn原创 2018-01-07 14:59:43 · 4384 阅读 · 0 评论 -
typeorm核心之ConnectionManager类
import {Connection} from "./Connection";src/connection/ConnectionManager.ts//连接管理器export class ConnectionManager { //管理的连接数组 protected readonly connections: Connection[] = []; //是否包...原创 2018-01-07 00:16:18 · 1193 阅读 · 0 评论 -
typeorm列类型
//主键自动生成列类型,主要为整型、小数等数值类型export type PrimaryGeneratedColumnType = "int" // mysql, mssql, oracle, sqlite |"int2" // postgres, sqlite |"int2" // postgres, sqlite |"int4" // postgres |"i原创 2018-01-06 21:22:38 · 5077 阅读 · 0 评论 -
typeorm的根方法
src/index.ts//获取元数据参数存储对象export function getMetadataArgsStorage(): MetadataArgsStorage { //获取全局作用域 const globalScope = PlatformTools.getGlobalVariable(); //初始化元数据存储对象 if (!globalSco原创 2018-01-06 23:55:22 · 1173 阅读 · 0 评论 -
typeorm顶层容器实现
src/container.ts//使用容器选项export interface UseContainerOptions { //如果设置为true,当给定容器未返回任何数据时,会使用默认容器 fallback?: boolean; //当给定容器抛出异常时,会使用默认容器 fallbackOnErrors?: boolean;}//默认容器,如果没有设原创 2018-01-07 00:10:22 · 438 阅读 · 0 评论 -
typeorm插入之save与insert
typeorm的Repository的数据库操作方法内部都调用了EntityManager的对应方法,对于同一类操作一般会有几个不同方法,如save、insert都可以用于插入除了他们对于subscriber、entity listener的触发不同之外,在使用上它们也有区别1.插入一个新的对象实体:import { Entity , PrimaryGenerate原创 2018-02-12 11:18:18 · 8997 阅读 · 0 评论 -
typeorm更新之save与update、updateById
save方法与update、updateById这三个方法都有更新数据库的作用,其中save方法在何时会更新何时会保存已经实验过了,现在主要区分一下这几个方法的使用1.最正常的更新,更新一个已存在实体:实体:import { Entity , PrimaryGeneratedColumn , Column ,PrimaryColumn} from 'typeorm'@Enti原创 2018-02-12 12:25:50 · 17887 阅读 · 0 评论 -
typeorm删除之remove与delete
typeorm删除一个实体有两类方法:delete、deleteByIdremove、removeById、removeByIds其中remove能够触发subscriber、entity listener。而delete方法不能触发已经讨论过了,这类似于save与insert、update的关系下面在使用上也做一些区分:1.正常删除,删除已存在实体remove:原创 2018-02-12 12:52:56 · 9959 阅读 · 0 评论 -
typeorm之OneToOne关系中@JoinColumn位置问题
我们知道,@JdinColumn装饰器是用来指定外键的,其所在一方即为外键所在一方,它的选项指定了外键名、引用的键名在ManyToOne关系中,外键肯定是在Many一方,也只能在这里在ManyToMany关系中,外键在关联表中,对双方是平等的在OneToOne关系中,外键可以在任何一方,但是当外键确定在某一方之后,在使用方式上会有影响原创 2018-01-18 16:09:25 · 2956 阅读 · 0 评论 -
typeorm装饰器之Column
src/decorator/columns/Column.tsimport {ColumnOptions} from "../options/ColumnOptions";import {getMetadataArgsStorage} from "../../index";import { ColumnType, SimpleColumnType, WithLeng原创 2018-01-06 21:53:03 · 4487 阅读 · 0 评论 -
typeorm装饰器之Entity
import {getMetadataArgsStorage} from "../../index";import {TableMetadataArgs} from "../../metadata-args/TableMetadataArgs";import {EntityOptions} from "../options/EntityOptions";//实体装饰器工厂方法声明expo原创 2018-01-06 20:13:16 · 1421 阅读 · 0 评论 -
typeorm装饰器OneToMany之cascadeUpdate
1默认选项实体:import { Entity,PrimaryColumn,Column,OneToMany,JoinColumn} from 'typeorm'import { User} from './User'@Entity()export class Post { @PrimaryColumn('int') id:number; @Column('v原创 2018-02-26 21:57:42 · 962 阅读 · 0 评论 -
typeorm装饰器OneToMany之cascadeInsert
1.默认选项实体:import { Entity,PrimaryColumn,Column,ManyToOne,JoinColumn,Index} from 'typeorm'import { Post } from './Post'import { LazyRelationsWrapper } from 'typeorm/lazy-loading/LazyRelationsWra原创 2018-02-26 21:34:47 · 1330 阅读 · 0 评论 -
typeorm装饰器ManyToOne之cascadeInsert
1默认选项实体:import { Entity,PrimaryColumn,Column,OneToMany,JoinColumn} from 'typeorm'import { User} from './User'@Entity()export class Post { @PrimaryColumn('int') id:number; @Column('v原创 2018-02-26 22:20:42 · 707 阅读 · 0 评论 -
typeorm装饰器ManyToOne之cascadeUpdate
1.默认选项实体:import { Entity,PrimaryColumn,Column,ManyToOne,JoinColumn,Index} from 'typeorm'import { Post } from './Post'import { LazyRelationsWrapper } from 'typeorm/lazy-loading/LazyRelationsWrapp原创 2018-02-26 22:47:55 · 560 阅读 · 0 评论 -
typeorm装饰器ManyToOne之cascadeRemove
1默认选项实体:import { Entity,PrimaryColumn,Column,ManyToOne,JoinColumn,Index} from 'typeorm'import { Post } from './Post'import { LazyRelationsWrapper } from 'typeorm/lazy-loading/LazyRelationsWrappe原创 2018-02-26 22:58:30 · 1494 阅读 · 0 评论 -
typeorm之Driver
src/driver/DriverFactory.ts//驱动工厂类,用来根据连接创建指定类型数据库的驱动export class DriverFactory { //驱动工厂根据连接实例创建驱动 create(connection: Connection): Driver { //获取连接选项中的连接类型 const type = conne原创 2018-02-13 00:05:59 · 663 阅读 · 0 评论 -
typeorm学习笔记之创建项目
安装typeormnpm i -g typeorm使用typeorm命令自动生成项目骨架typeorm init --name first --database mysqlname为项目目录名,database为选择数据库默认生成的为ts文件,并使用ts-node来运行package.json"scripts": { "start":原创 2018-01-06 10:47:45 · 2305 阅读 · 0 评论