Postgresql Sequelize关键字搜索,包含表上的子句条目缺少包含和限制原因
我正在对Post的列以及相关联的表列实现一个通用关键字搜索 帖子属于分类。 波斯特有许多相似之处 当我通过组合where.$or、limit/offset和order尝试此筛选器时,我从表“category”的子句条目中得到一个错误Postgresql Sequelize关键字搜索,包含表上的子句条目缺少包含和限制原因,postgresql,sequelize.js,Postgresql,Sequelize.js,我正在对Post的列以及相关联的表列实现一个通用关键字搜索 帖子属于分类。 波斯特有许多相似之处 当我通过组合where.$or、limit/offset和order尝试此筛选器时,我从表“category”的子句条目中得到一个错误 我认为这是因为sequelize似乎只在主查询上应用所包含模型的外部联接,而不是用于筛选/限制的内部查询,但不确定如何解决这个问题。如果您有任何解决方案或建议,我将不胜感激 js 记录sql。注释行是由我添加的,不是由sequelize添加的 SELECT
我认为这是因为sequelize似乎只在主查询上应用所包含模型的外部联接,而不是用于筛选/限制的内部查询,但不确定如何解决这个问题。如果您有任何解决方案或建议,我将不胜感激
js
记录sql。注释行是由我添加的,不是由sequelize添加的
SELECT "post".*,
"likes"."id" AS "likes.id",
"likes"."userId" AS "likes.userId",
"likes"."postId" AS "likes.postId",
"likes"."createdAt" AS "likes.createdAt",
"likes"."updatedAt" AS "likes.updatedAt",
"likes"."deletedAt" AS "likes.deletedAt",
"category"."id" AS "category.id",
"category"."label" AS "category.label",
"category"."createdAt" AS "category.createdAt",
"category"."updatedAt" AS "category.updatedAt",
"category"."deletedAt" AS "category.deletedAt"
FROM (
SELECT "post"."id",
"post"."title",
"post"."content",
"post"."createdAt",
"post"."updatedAt"
FROM "posts" AS "post"
// adding left outer join for category here seems to solve the problem. ex)
// LEFT OUTER JOIN "categories" AS "category"
// ON "post"."categoryId" = "category"."id"
WHERE (
"post"."title" ilike '%english%'
OR "category"."label" ilike '%english%')
ORDER BY "post"."id" DESC limit 25 offset 0) AS "post"
LEFT OUTER JOIN "likes" AS "likes"
ON "post"."id" = "likes"."postId"
LEFT OUTER JOIN "categories" AS "category"
ON "post"."categoryId" = "category"."id"
ORDER BY "post"."id" DESC;
我正在使用
续集6.3.5
nodejs10.22.0
SELECT "post".*,
"likes"."id" AS "likes.id",
"likes"."userId" AS "likes.userId",
"likes"."postId" AS "likes.postId",
"likes"."createdAt" AS "likes.createdAt",
"likes"."updatedAt" AS "likes.updatedAt",
"likes"."deletedAt" AS "likes.deletedAt",
"category"."id" AS "category.id",
"category"."label" AS "category.label",
"category"."createdAt" AS "category.createdAt",
"category"."updatedAt" AS "category.updatedAt",
"category"."deletedAt" AS "category.deletedAt"
FROM (
SELECT "post"."id",
"post"."title",
"post"."content",
"post"."createdAt",
"post"."updatedAt"
FROM "posts" AS "post"
// adding left outer join for category here seems to solve the problem. ex)
// LEFT OUTER JOIN "categories" AS "category"
// ON "post"."categoryId" = "category"."id"
WHERE (
"post"."title" ilike '%english%'
OR "category"."label" ilike '%english%')
ORDER BY "post"."id" DESC limit 25 offset 0) AS "post"
LEFT OUTER JOIN "likes" AS "likes"
ON "post"."id" = "likes"."postId"
LEFT OUTER JOIN "categories" AS "category"
ON "post"."categoryId" = "category"."id"
ORDER BY "post"."id" DESC;