NestJS:Mongodb驱动不支持此操作
Posted
技术标签:
【中文标题】NestJS:Mongodb驱动不支持此操作【英文标题】:NestJS: This operation is not supported by Mongodb driver 【发布时间】:2020-11-07 21:21:17 【问题描述】:我正在尝试从数据库中获取所有元素,但遇到以下错误:
This operation is not supported by Mongodb driver.
我正在使用 MongoDB 和 Mongoose 与数据库交互。
这是我发生错误的代码:
import GetTasksFilterDto from './dto/get-tasks-filter.dto';
import TaskStatus from './task-status.enum';
import CreateTaskDto from './dto/create-task.dto';
import TaskEntity from './task.entity';
import Repository, EntityRepository from 'typeorm';
@EntityRepository(TaskEntity)
export class TaskRepository extends Repository<TaskEntity>
async getTasks(filterDto: GetTasksFilterDto): Promise<TaskEntity[]>
const status, search = filterDto;
const query = this.createQueryBuilder('task');
// The error happen in this line
const tasks = await query.getMany();
return tasks;
【问题讨论】:
操作是什么? 我认为 getMany() 对吗? 您似乎在使用TypeORM
,但您包含标签mongoose
。如果猫鼬不相关,请将标签设置为typeorm
【参考方案1】:
TypeORM MongoDB Documentation 会为我完成这项工作吗?
问题是,我这样做的方式是错误的,mongodb 不支持这种查询方式,而是我必须使用正确的方式来做到这一点,即使用 MongoRepository 允许我们为任何实体创建管理器。
下面的代码显示了我是如何解决这个问题的:
async getTasks(filterDto: GetTasksFilterDto): Promise<TaskEntity[]>
const status, search = filterDto;
const manager = getMongoRepository(TaskEntity);
const tasks = await manager.find(
status: status,
where:
$or: [
text: Like(`%$search.toString()%`) ,
title: Like(`%$search.toString()%`) ,
],
,
);
return tasks;
【讨论】:
您的问题解决了吗?这似乎不是一个正确的答案。如果你已经解决了,请描述你做了什么来解决它。以上是关于NestJS:Mongodb驱动不支持此操作的主要内容,如果未能解决你的问题,请参考以下文章
如何在 MongoDB C# 驱动程序版本 2 中使用 $ 位置运算符
如何在 MongoDB C# 驱动程序版本 2 中使用 $ 位置运算符
此客户端所连接的 MongoDB 集群不支持会话-springboot-mongodb-transactions
Mongodb 官网驱动2.2.4.26版本 增,删 改,查,mongodb2.2.4.26