【问题标题】:SQL query to PostgeSQL tables [duplicate]对 PostgreSQL 表的 SQL 查询 [重复]
【发布时间】:2021-01-27 21:21:15
【问题描述】:

我有问题。

SELECT * 
FROM posts CROSS JOIN public."postReactions" AS reactions
WHERE posts.userId = '423abb9e-a00d-4045-9e88-4a85897f67e4'

但来自 DB 的响应类似于“错误:posts.userid 列不存在”。 第 3 行:在哪里 posts.userId = '423abb9e-a00d-4045-9e88-4a85897f67e4'。

以下 CROSS JOIN 的结果:

    • 帖子表
    • PostReactions 表

对以下模型进行续集:

 export default models => {
  const {
    User,
    Post,
    PostReaction,
    PostNegativeReaction,
    Comment,
    Image
  } = models;


  User.hasMany(Post);
  User.hasMany(PostReaction);

  Post.belongsTo(User);
  Post.hasMany(PostReaction);

  PostReaction.belongsTo(Post);
  PostReaction.belongsTo(User);
};

这是我的联想:

export default {
  up: (queryInterface, Sequelize) => queryInterface.sequelize
    .transaction(transaction => Promise.all([     
      queryInterface.addColumn('posts', 'userId', {
        type: Sequelize.UUID,
        references: {
          model: 'users',
          key: 'id'
        },
        onUpdate: 'CASCADE',
        onDelete: 'SET NULL'
      }, { transaction }),
      queryInterface.addColumn('postReactions', 'userId', {
        type: Sequelize.UUID,
        references: {
          model: 'users',
          key: 'id'
        },
        onUpdate: 'CASCADE',
        onDelete: 'SET NULL'
      }, { transaction }),
      queryInterface.addColumn('postReactions', 'postId', {
        type: Sequelize.UUID,
        references: {
          model: 'posts',
          key: 'id'
        },
        onUpdate: 'CASCADE',
        onDelete: 'SET NULL'
      }, { transaction }),     
    ])),

  down: queryInterface => queryInterface.sequelize
    .transaction(transaction => Promise.all([
      queryInterface.removeColumn('posts', 'userId', { transaction }),
      queryInterface.removeColumn('postReactions', 'userId', { transaction }),
      queryInterface.removeColumn('postReactions', 'postId', { transaction })
    ]))
};

MERN 堆栈。 主要问题:如何向 db 发出请求,该请求将接收带有 POSTS 正文的响应(仅当前用户喜欢)。

【问题讨论】:

标签: sql node.js postgresql sequelize.js quoted-identifier


【解决方案1】:

如果表是使用转义的列名创建的,这将是可能的。 . . "postId" 而不是 postId

我怀疑这是问题所在。最好的解决方案是重新创建表,并且永远不要转义 any 标识符。或者,您可以使用转义的列名。

【讨论】:

    猜你喜欢
    • 2021-05-28
    • 2016-07-19
    • 2011-11-12
    • 2016-08-30
    • 1970-01-01
    • 2015-09-28
    • 1970-01-01
    • 2019-04-10
    • 1970-01-01
    相关资源
    最近更新 更多