无法使用 typeorm (NestJS) 在 SQL Server 中插入 bigint
Posted
技术标签:
【中文标题】无法使用 typeorm (NestJS) 在 SQL Server 中插入 bigint【英文标题】:Cannot insert bigint in SQL Server using typeorm (NestJS) 【发布时间】:2022-01-02 05:59:41 【问题描述】:我想使用 typeorm 在 SQL Server 中插入记录,其中列的类型为 bigint。我有 id 类型的“猫”实体:bigint。
import Column, Entity from 'typeorm';
@Entity('Cats')
export class CatsEntity
@Column( type: 'bigint', name: 'CatID' )
public id: string;
@Column('int', primary: true, name: 'CatDB' )
public db: number;
@Column('varchar', name: 'Name' )
public name: string;
@Column('datetime', name: 'DDB_LAST_MOD' )
public ddbLastMod: Date;
还有 dto,我进入控制器:
export class InsertCatsDto
public id: string;
public db: number;
public name: string;
在控制器中执行保存:
@Post('/cats')
public async insertEobResponse(@Body() insertCatsDto: InsertCatsDto): Promise<any>
const cats = new CatsEntity();
cats.id = insertCatsDto.id;
cats.db = insertCatsDto.db;
cats.name = insertCatsDto.name;
cats.ddbLastMod = new Date();
return this.catsRepository.insert(cats);
但是当我通过 Postman 发送带有 id 作为字符串的请求时,我收到以下错误:
"error": "Error: Validation failed for parameter '0'. Value must be between -9007199254740991 and 9007199254740991, inclusive. For smaller or bigger numbers, use VarChar type."
我不确定我是否只是缺少某些东西或需要对值进行一些转换,或者这是否是 typeorm 的一个真正问题。
【问题讨论】:
你为什么将id
称为字符串?
@AaronBertrand 当我路由实体时,我受到了这个主题 ***.com/questions/59927625/… 的启发,并在 typeorm.io/#/entities/column-types 中有一个关于 bigInt 的注释,这就是为什么它是一个字符串
【参考方案1】:
要使您的代码在 typeorm 中使用 bigInt,您只需将实体中的类型从“bigint”更改为“varchar”:
import Column, Entity from 'typeorm';
@Entity('Cats')
export class CatsEntity
@Column( type: 'varchar', name: 'CatID' )
public id: string;
@Column('int', primary: true, name: 'CatDB' )
public db: number;
@Column('varchar', name: 'Name' )
public name: string;
@Column('datetime', name: 'DDB_LAST_MOD' )
public ddbLastMod: Date;
【讨论】:
以上是关于无法使用 typeorm (NestJS) 在 SQL Server 中插入 bigint的主要内容,如果未能解决你的问题,请参考以下文章
NestJS TypeORM MongoDB 无法使用 find 或 FindOne 搜索存储库
使用 Typeorm 连接到 Nestjs 中的 mssql,但 Nest 无法解析 EmployeeRepository 的依赖关系
NestJS/TypeORM:无法读取未定义的属性“createQueryBuilder”