问题描述
这是我要提出的查询:
const updatedUser = await queryRunner.manager
.getRepository(UserEntity)
.createQueryBuilder('user')
.leftJoinAndSelect('user.categories','cats')
.where('id = :userId',{ userId })
.getOne();
这是由typeorm生成的查询:
SELECT "user"."id" AS "user_id","user"."first_name" AS "user_first_name","user"."last_name" AS "user_last_name","user"."phone" AS "user_phone","user"."password" AS "user_password","user"."password_hint" AS "user_password_hint","user"."recovery_email" AS "user_recovery_email","user"."created" AS "user_created","user"."username" AS "user_username","user"."profile_pic" AS "user_profile_pic","user"."is2fa" AS "user_is2FA","user"."refresh_token" AS "user_refresh_token","user"."profile_email" AS "user_profile_email","user"."subscriptionid" AS "user_subscriptionId","cats"."id" AS "cats_id","cats"."template_id" AS "cats_template_id","cats"."name" AS "cats_name","cats"."entry_count" AS "cats_entry_count","cats"."is_base_template" AS "cats_is_base_template","cats"."can_rename" AS "cats_can_rename","cats"."can_delete" AS "cats_can_delete","cats"."userid" AS "cats_userId","cats"."position" AS "cats_position","cats"."icon_path" AS "cats_icon_path","cats"."init_name" AS "cats_init_name","cats"."isfortasks" AS "cats_isForTasks","cats"."is_locked_by" AS "cats_is_locked_by","cats"."is_locked" AS "cats_is_locked","cats"."password" AS "cats_password","cats"."state" AS "cats_state","cats"."password_hint" AS "cats_password_hint","cats"."parentcategoryid" AS "cats_parentCategoryId"
FROM "user" "user"
LEFT JOIN "category" "cats"
ON "cats"."userid" = "user"."id"
WHERE id = $1
如果我删除leftJoinAndSelect
,则不会产生该错误,但是我需要此联接。
查询出了什么问题?
META:
我正在使用的DBMS是PostgreSQL v.1.2.3。
解决方法
好吧,正如您所看到的,有 <div class="container">
<div class="main">
Lorem ipsum dolor sit amet consectetur adipisicing elit. Ullam deleniti voluptatem minima tenetur,quidem consequatur velit deserunt nemo sint,numquam aspernatur molestias eum aperiam. Obcaecati impedit rerum itaque,adipisci laudantium totam ipsum dolorum. Vel unde id sapiente! Consequatur velit,voluptatibus culpa,vel quis tempore repellendus eum,tenetur dolor commodi quos.
consequatur velit deserunt nemo sint,tenetur dolor commodi quos.
</div>
<div class="side">
Lorem ipsum dolor sit amet consectetur adipisicing elit. Quam,ipsum.
</div>
</div>
和user.id
可用-您甚至可以同时选择两者。但是在cats.id
子句中,您没有说出您是指哪个WHERE
。将id
更改为'id = :userId'
,它应该可以工作。