NestJS TypeORM mongodb 在数组列中查找不起作用

Posted

技术标签:

【中文标题】NestJS TypeORM mongodb 在数组列中查找不起作用【英文标题】:NestJS TypeORM mongodb find in an array column does not work 【发布时间】:2021-01-20 11:29:10 【问题描述】:

所以我正在使用 NestJs 和带有 mongodb 的 TypeORM 进行项目。早些时候我们使用 express 和 mongoose 并在数组列中查找结果,我们使用的是这样的:

        Event.find(
                'teachers': _id
            )

现在,当我们使用 TypeORM 迁移到新的 Nest 后端时,我们正在使用这个:

        this.eventRepository.find(
                where: 
                    'teachers': _id
                
            );

但这不起作用。奇怪的是,我们在 mongoose 中使用的所有查询都可以正常工作,除了这个。我尝试将猫鼬与 NestJS 一起使用,这确实有效,所以函数参数或任何东西都没有问题。

现在我将发布我们的事件实体的外观,以便您有一个想法:

@Entity('events')
export class Event
    
    @ObjectIdColumn()
    public _id: ObjectID;

    @Column()
    public title :string;

    @Column()
    public teachers: string[];
//the rest with getters and setters.

如果有人能告诉我我做错了什么,或者有其他方法可以做到这一点,或者我应该报告 TypeORM 的错误,那就太好了。

【问题讨论】:

【参考方案1】:

我假设您有一个名为:Teacher 的实体类,其中有一个 _id 字段:

 @ObjectIdColumn()
    public _id: ObjectID;

在您的Event 实体类中,您应该将教师类型从string[] 更改为ObjectID[],如下所示:

 @Column()
    public teachers: ObjectID[];

最后,你的查询应该如下:

 this.eventRepository.find(
    where: 
        'teachers._id':  $eq: _id 
    
 );

【讨论】:

以上是关于NestJS TypeORM mongodb 在数组列中查找不起作用的主要内容,如果未能解决你的问题,请参考以下文章

nestjs使用Typeorm实现数据库CRUD操作

找不到模块'@nestjs/typeorm'

TypeError:存储库方法不是函数(NestJS / TypeORM)

过滤从查询参数传递的数组。 NestJS,TypeORM

NestJS + TypeORM 中的 JoinTable 问题

NestJS + TypeORM:使用两个或更多数据库?