对 PostgeSQL 表的 SQL 查询

问题描述

我有问题。

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

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

CROSS JOIN 的结果如下:

enter image description here

    • 帖子表
    • 后反应表

以下模型的续集:

 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','postId',references: {
          model: 'posts',])),down: queryInterface => queryInterface.sequelize
    .transaction(transaction => Promise.all([
      queryInterface.removeColumn('posts',queryInterface.removeColumn('postReactions',{ transaction })
    ]))
};

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

解决方法

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

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

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...