首页 > 解决方案 > LeftJoinAndMapOne 与 typeorm 中的子查询

问题描述

我是 typeorm 的新手,不知道如何处理。

我需要 leftJoinAndMapOne 和没有关系的子查询(只是想知道这是否可能)。

其他问题是我可以在 leftJoinAndMapOne (嵌套)中使用 leftJoinAndMapOne 吗?

你能帮我解决这个问题吗?

await this.connection
            .getRepository(UserInfoEntity)
            .createQueryBuilder('user_info')
            .leftJoinAndMapOne(
                'user_info.roles',
                (qb) => {
                    return qb.select().from(UserHasOrganizationRoleEntity, 'orgRole');
                },
                'orgRole',
                'orgRole.userId = :userId AND orgRole.organizationId = :organizationId',
                {
                    userId: auth_user.userId,
                    organizationId: auth_user.organizationId,
                },
            )
            .where('user_info.id = :id', { id })
            .getRawMany();

错误:

QueryFailedError:缺少表“orgrole”的 FROM 子句条目

在 PostgresQueryRunner 的新 QueryFailedError (/Volumes/Project/Toptipi-node/node_modules/typeorm/error/QueryFailedError.js:11:28)
。(/Volumes/Project/Toptipi-node/node_modules/typeorm/driver/postgres/PostgresQueryRunner.js:247:31)
在步骤 (/Volumes/Project/Toptipi-node/node_modules/tslib/tslib.js:141:27) 在 Object.throw (/Volumes/Project/Toptipi-node/node_modules/tslib/tslib.js:122:57)在 processTicksAndRejections (internal/process/task_queues.js:93:5) 处被拒绝 (/Volumes/Project/Toptipi-node/node_modules/tslib/tslib.js:113:69) {长度:120,严重性:'错误',代码:“42P01”,详细信息:未定义,提示:未定义,位置:“1192”,内部位置:未定义,内部查询:未定义,其中:未定义,架构:未定义,表:未定义,列:未定义,数据类型:未定义,约束:未定义,文件:'parse_relation.c',行:'3459',例程:'errorMissingRTE',查询:'SELECT "user_info"."id" AS "user_info_id", "user_info"."firstName" AS"user_info_firstName", "user_info"."title" AS "user_info_title", "user_info"."lastName" AS "user_info_lastName", "user_info"."gender" AS "user_info_gender", "user_info"."phoneNumber" AS "user_info_phoneNumber" , "user_info"."organizationId" AS "user_info_organizationId", "user_info"."systemRoleId" AS "user_info_systemRoleId", "user_info"."userId" AS "user_info_userId", "user_info"."address" AS "user_info_address", " user_info"."cityId" AS "user_info_cityId", "user_info"."stateId" AS "user_info_stateId", "user_info"."countryId"AS "user_info_countryId", "user_info"."pincode" AS "user_info_pincode", "user_info"."joiningDate" AS "user_info_joiningDate", "user_info"."image" AS "user_info_image", "user_info"."imagePath" AS " user_info_imagePath", "user_info"."experience" AS "user_info_experience", "user_info"."expFile" AS "user_info_expFile", "user_info"."expFilePath" AS "user_info_expFilePath", "user_info"."createdAt" AS "user_info_createdAt" , "user_info"."updatedAt" AS "user_info_updatedAt", "orgRole".* FROM "user_info" "user_info" LEFT JOIN (SELECT * FROM "user_has_organization_roles" "orgRole") "orgRole" ON orgRole.userId = $1 AND orgRole.organizationId = $2 WHERE "user_info"."id" = $3',参数:['2','1','14']}

标签: nestjstypeorm

解决方案


推荐阅读