Node.js TypeORM中的内部联接查询

Node.js TypeORM中的内部联接查询,node.js,typescript,postgresql,nestjs,typeorm,Node.js,Typescript,Postgresql,Nestjs,Typeorm,我有一个nestjs应用程序,它使用TypeORM包与PostgresSQL进行交互 我有下面的代码 import{Entity,PrimaryGeneratedColumn,Column,CreateDateColumn,UpdateDateColumn,Index}来自'typeorm'; @实体() 导出类用户{ @PrimaryGeneratedColumn() 公众id:号码; @索引() @列({nullable:true}) public userId:number; @索引()

我有一个nestjs应用程序,它使用TypeORM包与PostgresSQL进行交互

我有下面的代码

import{Entity,PrimaryGeneratedColumn,Column,CreateDateColumn,UpdateDateColumn,Index}来自'typeorm';
@实体()
导出类用户{
@PrimaryGeneratedColumn()
公众id:号码;
@索引()
@列({nullable:true})
public userId:number;
@索引()
@第()列
公共appId:string;
@列({nullable:true})
公钥ID:数字;
}
从“typeorm”导入{Entity,PrimaryGeneratedColumn,Column,CreateDateColumn,UpdateDateColumn,Index};
@实体()
导出类密钥{
@PrimaryGeneratedColumn()
公众id:号码;
@索引()
@第()列
public userId:number;
@索引()
@第()列
公钥:字符串;
}
从'@nestjs/common'导入{Injectable};
从'@nestjs/typeorm'导入{InjectRepository};
从“typeorm”导入{createQueryBuilder,Repository,getRepository,getManager};
从“../User.entity”导入{User};
从“/Key.entity”导入{Key};
@可注射()
导出类密钥服务{
公共构造函数(
@注入存储库(密钥)
私有只读密钥存储库:存储库,
@注入存储库(用户)
私有只读用户存储库:存储库,
) {}
公共异步获取(userId:id):承诺{
const user=wait this.userRepository.findOne({where:{userId:id}});
const result=//内部联接的类型化查询
返回结果
}
对于键和用户实体,我需要创建一个内部连接作为

从key.id=user上的key-internal-JOIN-user中选择*,其中user.userId=1

如何使用typeORM编写等效的内部联接查询

@Injectable()
export class KeyService {
  public constructor(
    @InjectRepository(Key)
    private readonly keyRepository: Repository<Key>
  ) {}

public fetch(userId: id): Promise<any> {
  return this.keyRepository.createQueryBuilder('key')
    .innerJoinAndMapOne('key.user', User, 'user', 'key.id = user.keyId')
    .where('user.userId = :userId', { userId: 1 }) // or you can change condition to 'key.userId = :userId' because of you have `userId` in Key
    .getMany(); 
}
如何使用typeORM执行上述SQL查询?

@Injectable()
@Injectable()
export class KeyService {
  public constructor(
    @InjectRepository(Key)
    private readonly keyRepository: Repository<Key>
  ) {}

public fetch(userId: id): Promise<any> {
  return this.keyRepository.createQueryBuilder('key')
    .innerJoinAndMapOne('key.user', User, 'user', 'key.id = user.keyId')
    .where('user.userId = :userId', { userId: 1 }) // or you can change condition to 'key.userId = :userId' because of you have `userId` in Key
    .getMany(); 
}
导出类密钥服务{ 公共构造函数( @注入存储库(密钥) 私有只读密钥存储库:存储库 ) {} 公共获取(userId:id):承诺{ 返回此.keyRepository.createQueryBuilder('key')) .innerJoinAndMapOne('key.user',user',user','user','key.id=user.keyId') .where('user.userId=:userId',{userId:1})//或者您可以将条件更改为'key.userId=:userId',因为您的键中有'userId' .getMany(); }
@Injectable()
导出类密钥服务{
公共构造函数(
@注入存储库(密钥)
私有只读密钥存储库:存储库
) {}
公共获取(userId:id):承诺{
返回此.keyRepository.createQueryBuilder('key'))
.innerJoinAndMapOne('key.user',user',user','user','key.id=user.keyId')
.where('user.userId=:userId',{userId:1})//或者您可以将条件更改为'key.userId=:userId',因为您的键中有'userId'
.getMany();
}