x1c 0d1x我是Nestjs的新手,在使用这些版本的typeOrm“@nestjs/typeorm”时:“^9.0.1”,“类型标准”:“^0.3.11”,我收到此错误“类型错误:无法读取未定义“”的属性“findOneBy”,我真的不明白为什么。因此,我了解到findOne已被弃用,我可以使用findByOne代替。但每次我尝试使用postman进行测试时,我都会遇到此错误。附件是下面终端中的错误。如果您能提供任何有关如何解决此问题的帮助,我将不胜感激
我试过将typeorm的版本更改为较低的版本“^0.2.32”,它修复了错误,但在运行它时引入了另一个错误。但我想使用我在网上搜索的更新版本,看看我是否能找到任何帮助,但没有与我的问题相关的。
这是我的代码。另外,我注意到EntityRepository被删除了,因为它已被弃用。
tasks.repository
import { Injectable } from '@nestjs/common';
import { EntityRepository, Repository } from 'typeorm';
import { Task } from './task.entity';
@Injectable()
@EntityRepository(Task)
export class TasksRepository extends Repository<Task> {}
tasks.controller.ts
import {
Body,
Controller,
Get,
Param,
Post,
} from '@nestjs/common';
import { CreateTaskDto } from './dto/create-task.dto';
import { Task } from './task.entity';
import { TasksService } from './tasks.service';
@Controller('tasks')
export class TasksController {
constructor(private tasksService: TasksService) {}
@Get('/:id')
getTaskById(@Param('id') id: string): Promise<Task> {
return this.tasksService.getTaskById(id);
}
@Post()
createTask(@Body() createTaskDto: CreateTaskDto): Promise<Task>
{
return this.tasksService.createTask(createTaskDto);
}
}
tasks.service
import { Injectable, NotFoundException } from '@nestjs/common';
import { TasksRepository } from './task.repository';
import { InjectRepository } from '@nestjs/typeorm';
import { Task } from './task.entity';
import { TaskStatus } from './task-status.enum';
import { CreateTaskDto } from './dto/create-task.dto';
@Injectable()
export class TasksService {
constructor(
@InjectRepository(TasksRepository)
private taskRepository: TasksRepository,
) {}
async getTaskById(id: string): Promise<Task> {
const found = await this.taskRepository.findOneBy({ id: id });
if (!found) {
throw new NotFoundException(`Task with ID "${id}" not
found`);
}
return found;
}
}
1条答案
按热度按时间u3r8eeie1#
不久,在您的存储库中,您缺少实体管理器,您需要提供一个在自定义存储库构造函数中调用
super()
的实体管理器。有几种方法可以帮助你,这些方法可以在typeorm文档和nestjs文档中找到:
1.坚持使用自定义存储库,并且可以在互联网上搜索和找到
我刚刚完成从typeorm
0.2.45
到0.3.11
和@nestjs/typeorm
9.0.1
的迁移。我们的代码库由70多个自定义存储库组成,这些存储库在许多地方使用:服务、测试、种子、修复(类似于自定义迁移)......出于这个原因,现在我们坚持使用自定义类仓库(和以前一样),尽管我不确定这是否是一条路。至少应用程序看起来可以工作,测试正在通过。但也许我们会在迭代中更新东西,一旦我们在社区中得到更多的反馈--哪些是首选的方式,哪些不是(以及为什么)。
最后,非常重要的是,
user.service.ts
中的事务伪代码:我分享这个主要是为了从社区得到(好的或坏的)反馈。