【问题标题】:NestJS TypeORM mongodb find in an array column does not workNestJS TypeORM mongodb 在数组列中查找不起作用
【发布时间】: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 的错误,那就太好了。

【问题讨论】:

    标签: arrays mongodb mongoose nestjs typeorm


    【解决方案1】:

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

     @ObjectIdColumn()
        public _id: ObjectID;
    

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

     @Column()
        public teachers: ObjectID[];
    

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-03-17
      • 1970-01-01
      • 2021-01-18
      • 2022-06-22
      • 2020-11-23
      • 2017-10-06
      • 2020-11-23
      相关资源
      最近更新 更多