SQL 查询 PostgeSQL 个表

SQL query to PostgeSQL tables

我有问题。

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

但是数据库的响应就像“错误:列 posts.userid 不存在。 第 3 行:WHERE posts.userId = '423abb9e-a00d-4045-9e88-4a85897f67e4'.

下面的 CROSS JOIN 结果:

    • 帖子table
    • 后反应 table

续集以下模型:

 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 正文的响应(仅被当前用户点赞)。

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

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