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 标识符。或者,您可以使用转义的列名称。
我有问题。
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 标识符。或者,您可以使用转义的列名称。