Javascript 在`或`语句中使用包含关系的Where子句

Javascript 在`或`语句中使用包含关系的Where子句,javascript,postgresql,sequelize.js,Javascript,Postgresql,Sequelize.js,我正在使用Sequelize将一个项目从MySQL迁移到Postgres,但有一件事马上就失败了。这似乎是因为“用户”不包括在任何地方 编辑:错误消息为“缺少表用户的FROM子句条目” sequelize的代码是: List.model.findOne({ where: { id: listId, $or: [ { open: true }, ['Users.id = ?', [userId]], // <-- the line I think

我正在使用Sequelize将一个项目从MySQL迁移到Postgres,但有一件事马上就失败了。这似乎是因为“用户”不包括在任何地方

编辑:错误消息为“缺少表用户的FROM子句条目”

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
  }],
});
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区分大小写:

引用标识符也使其区分大小写,而未引用的名称总是折叠成小写。例如,PostgreSQL认为标识符FOO、FOO和“FOO”是相同的,但“FOO”和“FOO”彼此不同。(在PostgreSQL中,将不带引号的名称折叠为小写与SQL标准不兼容,SQL标准规定不带引号的名称应折叠为大写。因此,根据标准,foo应等同于“foo”而不是“foo”。如果您想编写可移植应用程序,建议您始终引用特定名称,或永远不要引用它。)


尝试用双引号将
Users.id
括起来,如
“Users”。“id”
,因为在PostgreSQL中,所有不带引号的标识符(表名、字段)都将折叠为小写,并且PostgreSQL区分大小写:

引用标识符也使其区分大小写,而未引用的名称总是折叠成小写。例如,PostgreSQL认为标识符FOO、FOO和“FOO”是相同的,但“FOO”和“FOO”彼此不同。(在PostgreSQL中,将不带引号的名称折叠为小写与SQL标准不兼容,SQL标准规定不带引号的名称应折叠为大写。因此,根据标准,foo应等同于“foo”而不是“foo”。如果您想编写可移植应用程序,建议您始终引用特定名称,或永远不要引用它。)


错误消息是什么?从表users的子句条目中缺少错误消息是什么?从表users的子句条目中缺少错误消息我刚刚离开了代码,但这看起来很像。错误消息甚至以小写形式返回表名。只要我有机会尝试一下,我就会接受。就是这样。我不确定你是如何在没有错误信息的情况下到达那里的,但是谢谢!我刚刚离开了代码,但这看起来很像。错误消息甚至以小写形式返回表名。只要我有机会尝试一下,我就会接受。就是这样。我不确定你是如何在没有错误信息的情况下到达那里的,但是谢谢!