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 在数组列中查找不起作用的主要内容,如果未能解决你的问题,请参考以下文章
TypeError:存储库方法不是函数(NestJS / TypeORM)