首页 > 解决方案 > 续集 - 原始:错误:缺少表的 FROM 子句条目

问题描述

我收到一个错误: DatabaseError [SequelizeDatabaseError]: missing FROM-clause entry for table "position" 尝试按包含的模型字段搜索时position.label。请帮忙

“空缺”表有“positionId”字段

Vacancy.belongsTo(Position);

“职位”表有“标签”字段

在此处输入图像描述

await Vacancy.findAndCountAll({
   where: {
      [Op.and]: [
          ...(search ? [{ '$position.label$': { [Op.iLike]: `%${search}%` } }] : []),
      ]
   },
   include:  [{
      model: Position,
      attributes: ['id', 'label', 'value'],
   }],
   attributes: ['id', 'active', 'experienceYears', 'createdAt', 'updatedAt']
});
class Position extends Model {}

Position.init({
    id: {
        type: DataTypes.INTEGER,
        autoIncrement: true,
        allowNull: false,
        primaryKey: true,
    },
    label: {
        type: DataTypes.STRING,
    },
    value: {
        type: DataTypes.STRING,
    }
}, { sequelize, modelName: 'position' });

这是查询:

SELECT "vacancy".*,
       "position"."id" AS "position.id",
       "position"."label" AS "position.label",
       "position"."value" AS "position.value",
       "salaryRange"."id" AS "salaryRange.id",
       "salaryRange"."min" AS "salaryRange.min",
       "salaryRa
nge"."max" AS "salaryRange.max",
       "salaryRange->currency"."id" AS "salaryRange.currency.id",
       "salaryRange->currency"."label" AS "salaryRange.currency.label",
       "salaryRange->currency"."value" AS "salaryRange.currency.value",
       "salaryRang
e->currency"."createdAt" AS "salaryRange.currency.createdAt",
       "salaryRange->currency"."updatedAt" AS "salaryRange.currency.updatedAt",
       "skills"."id" AS "skills.id",
       "skills"."label" AS "skills.label",
       "skills"."value" AS "skills.valu
e",
       "regions"."id" AS "regions.id",
       "regions"."label" AS "regions.label",
       "regions"."value" AS "regions.value",
       "company"."id" AS "company.id",
       "company"."name" AS "company.name"
FROM
  (SELECT "vacancy"."id",
          "vacancy"."active",
          "vaca
ncy"."experienceYears",
          "vacancy"."createdAt",
          "vacancy"."updatedAt",
          "vacancy"."positionId",
          "vacancy"."companyId"
   FROM "vacancies" AS "vacancy"
   WHERE ("position"."label" ILIKE '%anna%')
   ORDER BY "vacancy"."updatedAt" DESC
   LIMIT 25
   OFFSET 0) AS "vacancy"
LEFT OUTER JOIN "positions" AS "position" ON "vacancy"."positionId" = "position"."id"
LEFT OUTER JOIN "salaryRanges" AS "salaryRange" ON "vacancy"."id" = "salaryRange"."vacancyId"
LEFT OUTER JOIN "currencies" A S "salaryRange->currency" ON "salaryRange"."currencyId" = "salaryRange->currency"."id"
LEFT OUTER JOIN ("through_vacancy_skills" AS "skills->through_vacancy_skills"
                 INNER JOIN "skills" AS "skills" ON "skills"."id" = "skills->through
_vacancy_skills"."skillId") ON "vacancy"."id" = "skills->through_vacancy_skills"."vacancyId"
LEFT OUTER JOIN ("through_vacancy_regions" AS "regions->through_vacancy_region"
                 INNER JOIN "regions" AS "regions" ON "regions"."id" = "regi
ons->through_vacancy_region"."regionId") ON "vacancy"."id" = "regions->through_vacancy_region"."vacancyId"
LEFT OUTER JOIN "companies" AS "company" ON "vacancy"."companyId" = "company"."id"
ORDER BY "vacancy"."updatedAt" DESC;

标签: sequelize.js

解决方案


推荐阅读