问题描述
我有问题。
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 的结果如下:
-
- 帖子表
-
- 后反应表
以下模型的续集:
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
。
我怀疑这就是问题所在。最好的解决方案是重新创建表,永远不要转义任何标识符。或者,您可以使用转义的列名。