sequelize.js - 续集 - 原始:错误:缺少表的 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;
解决方案
推荐阅读
- pdf - ABCpdf - 将 pdf 流转换为 tif 流
- design-patterns - 这些“类型对象设计模式”解释中的“品种”示例的目的是什么?
- laravel - Laravel 5:如何使用 Eloquent ORM 形式“排序”按日期存在而不存在
- c# - 带有 Masstransit 发布的中间件
- c - 如何限制对 FILE 的访问被 C 中的另一个进程或函数使用(写入/读取)?
- sql - 两次加入同一个表时得到重复值
- npm - 在 npm 包中使用 postinstall 是否安全?
- javascript - SAPUI5中元素绑定中的元素绑定
- php - 无法编辑页面正在迁移 wordpress 托管和域 - Error-post.php
- google-analytics - 如何在没有 gtag.js 库的情况下使用 Google Analytics