【问题标题】:TypeORM Typescript: How to ignore case when comparing UUID?TypeORM Typescript:比较UUID时如何忽略大小写?
【发布时间】:2021-11-22 08:45:44
【问题描述】:

以下代码:

.findOne({ id: model.userId })!;

是否区分大小写比较。我想将UUIDcase insensitive 进行比较。

我该怎么做?

我使用MSSQL 作为数据库。它以小写形式存储GUID。但是有一个问题,TypeORM总是返回Uppercased UUID

例如:

let application = await applicationRepo.findOne({id: model.id, ownerId: res.locals.owner.id});

返回这个:

{
    "id": "AFB3015E-BE49-EC11-AE4D-74D83E04F9D3",
    "name": ".....",
    "dateCreated": "1637384252132",
    "status": "ACTIVE",
    "ownerId": "96BBB111-BE49-EC11-AE4D-74D83E04F9D3"
}

如果可能的话,我想设置和获取小写的 uuid。

我该怎么做?


注意

这是实体示例:

@Entity()
export class Application {

    @PrimaryGeneratedColumn("uuid")
    id: string;

    @Column()
    name: string;

    @Column("bigint")
    dateCreated: number;

    @Column()
    status: string;

    @ManyToOne(type => Owner, owner => owner.applications)
    @JoinColumn({ name: "ownerId" })
    owner: Owner;

    @Column()
    ownerId: string;

    @OneToMany(type => User, user => user.application)
    users: User[];

    @OneToMany(type => ChatRoom, chatRoom => chatRoom.application)
    chatRooms: ChatRoom[];
}

【问题讨论】:

    标签: javascript typescript orm typeorm


    【解决方案1】:

    你可以使用toLowerCase()在本地修改它

    const data = {
        "id": "AFB3015E-BE49-EC11-AE4D-74D83E04F9D3",
        "name": ".....",
        "dateCreated": "1637384252132",
        "status": "ACTIVE",
        "ownerId": "96BBB111-BE49-EC11-AE4D-74D83E04F9D3"
    }
    
    const result = { ...data, id: data.id.toLowerCase() };
    
    console.log(result);

    【讨论】:

    • 有没有办法自动完成?有什么设置可以做到这一点?
    • @AlvinStefanus 你确定 uuid 是以小写形式存储在你的 sql 数据库中的吗?
    • @AlvinStefanus 对此有何更新?
    猜你喜欢
    • 2010-11-07
    • 2013-10-03
    • 1970-01-01
    • 1970-01-01
    • 2016-01-29
    • 2014-10-30
    • 1970-01-01
    • 1970-01-01
    • 2017-09-26
    相关资源
    最近更新 更多