【问题标题】:How can I create a custom repository in Prisma 2 using NestJS like TypeORM?如何使用像 TypeORM 这样的 NestJS 在 Prisma 2 中创建自定义存储库?
【发布时间】:2021-06-08 19:50:58
【问题描述】:

在 TypeORM 中,我可以创建一个类似的 CustomRepository:

import {EntityRepository, Repository} from "typeorm";
import {User} from "../entity/User";

@EntityRepository(User)
export class UserRepository extends Repository<User> {

    findByName(firstName: string, lastName: string) {
        return this.findOne({ firstName, lastName });
    }

}

如何使用 Prisma 2 和 NestJS 达到相同的结果?

【问题讨论】:

    标签: nestjs prisma2


    【解决方案1】:

    我不知道如何制作与使用 entityRepository 完全相同的东西。

    但是,你可以在 PrismaService 类中实现

    import { Injectable, OnModuleInit, OnModuleDestroy } from '@nestjs/common';
    import { PrismaClient } from '@prisma/client';
    
    @Injectable()
    export class PrismaService extends PrismaClient
      implements OnModuleInit, OnModuleDestroy {       
    
        async onModuleInit() {
          await this.$connect();
        }
        async onModuleDestroy() {
          await this.$disconnect();
        }
    
        findByName(firstName: string, lastName: string) {
          return this.findOne({ firstName, lastName });
        }
    }
    

    然后你可以像下面这样运行

    in your class.ts
    class something {
      constructor(private readonly prisma : PrismaService){}
      
      findName(){
        this.prisma.findByName(something);
      }
    }
    

    【讨论】:

    • 谢谢。这种方法的问题在于,在同一个文件中会引用不同模块使用的函数,这是不可扩展的。另一方面,我不知道你是否真的有一个很好的解决方案作为 TypeORM。
    猜你喜欢
    • 1970-01-01
    • 2022-07-07
    • 2022-12-04
    • 2022-11-23
    • 2020-07-02
    • 1970-01-01
    • 2021-08-07
    • 2021-06-07
    • 2021-01-07
    相关资源
    最近更新 更多