0

私は問題があります。

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 の結果:

ここに画像の説明を入力

    • 投稿表
    • PostReactions テーブル

以下のモデルを Sequelize します。

 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 スタック。主な問題: POSTS ボディ (現在のユーザーのみが気に入った) を含む応答を受け取る db への要求を行う方法。

4

1 に答える 1

0

これは、エスケープされた列名を使用してテーブルが作成された場合に可能です。. . "postId"ではなくpostId

それが問題だと思います。最善の解決策は、テーブルを再作成し、識別子をエスケープしないことです。または、エスケープされた列名を使用できます。

于 2021-01-27T21:23:22.563 に答える