Where子句在' OR '语句中使用包含关系
Where clause using included relation in `OR` statement
我正在使用Sequelize将一个项目从MySQL移动到Postgres,有一件事已经失败了。这似乎是由于'User'没有包含在任何地方。
编辑:错误信息是'missing FROM-clause entry for table users'.
sequelize的代码是:
List.model.findOne({
where: {
id: listId,
$or: [
{ open: true },
['Users.id = ?', [userId]], // <-- the line I think is breaking this.
],
},
include: [{
model: db.models.User
}],
});
我认为这是由于User
没有包括在FROM
条款中。但是,我不确定如何使Sequelize做正确的事情。
Sequelize生成的查询是:
SELECT "List"."id",
"List"."name",
"List"."image",
"List"."slug",
"List"."open",
"List"."password",
"List"."createdAt",
"List"."updatedAt",
"List"."OwnerId",
"Users"."id" AS "Users.id",
"Users"."firstName" AS "Users.firstName",
"Users"."lastName" AS "Users.lastName",
"Users"."email" AS "Users.email",
"Users"."password" AS "Users.password",
"Users"."image" AS "Users.image",
"Users"."facebookId" AS "Users.facebookId",
"Users"."googleId" AS "Users.googleId",
"Users"."createdAt" AS "Users.createdAt",
"Users"."updatedAt" AS "Users.updatedAt",
"Users.UserList"."createdAt" AS "Users.UserList.createdAt",
"Users.UserList"."updatedAt" AS "Users.UserList.updatedAt",
"Users.UserList"."ListId" AS "Users.UserList.ListId",
"Users.UserList"."UserId" AS "Users.UserList.UserId"
FROM "Lists" AS "List"
LEFT OUTER JOIN ("UserList" AS "Users.UserList"
INNER JOIN "Users" AS "Users" ON "Users"."id" = "Users.UserList"."UserId") ON "List"."id" = "Users.UserList"."ListId"
WHERE "List"."id" = 13
AND ("List"."open" = TRUE
OR (Users.id = 1234));
尝试像"Users"."id"
一样用双引号包装Users.id
,因为在PostgreSQL中所有未引号的标识符(表名,字段)将被折叠成小写,PostgreSQL是大小写敏感的:https://www.postgresql.org/docs/current/static/sql-syntax-lexical.html#SQL-SYNTAX-IDENTIFIERS
对标识符加引号也使其区分大小写,而未加引号的名称总是折叠成小写。例如,标识符FOO, FOO和"FOO"被PostgreSQL认为是相同的,但"FOO"answers"FOO"与这三者不同,彼此也不同。(在PostgreSQL中将未加引号的名字折叠成小写与SQL标准不兼容,SQL标准规定未加引号的名字应该折叠成大写。因此,根据标准,foo应该等同于"foo"而不是"foo"。如果你想编写可移植的应用程序,建议你总是引用一个特定的名称,或者永远不要引用它。
相关文章:
- 当包含另一个asp文件时,是否也包含所有引用的样式和脚本页面
- 货币代码为欧元-金额的格式不应包含小数
- 如何包含特定于每个视图angularjs的javascript文件
- 我如何修复包含在captcha的addthis中的错误
- 正在注入包含JS的HTML
- Json数据包含日期和时间格式
- Angular js-返回一个包含类似
- jQuery/JS包含运算符或类似运算符
- 如果href包含X,请更改href
- JavaScript数组包含一个值
- 带有填充属性的SVG矩形显示在包含元素的上方插入框阴影
- 在Meteor项目中安装并包含npm模块后出错
- 传递包含'%的参数'在URL中
- 气质的“nestRemoting()”有时可以'找不到关系
- 如何在Parse中创建一对多关系
- 阻止浏览包含模块'的依赖关系
- undercore.js-包含和减少之间的关系
- Parse.com是否允许在关系查询中包含指针
- Where子句在' OR '语句中使用包含关系
- r.js, almond:两个包含almond的.js文件是否可能共享依赖关系?