【发布时间】:2021-04-08 17:50:41
【问题描述】:
我正在尝试运行以下代码块,由于某种原因,查询尝试将其插入标记为 "users->user_group"."userUuid" 的列中,尽管事实上我在项目中没有引用字符串文字 userUuid 一次(通过不在代码库中搜索),还检查 pg-admin 中的列(使用 PostgreSQL),user_group 表中的两列都是 user_uuid 和 group_uuid,这两列也都经过验证并正确填充。
const result = await group.findAll({
include: user,
});
邮递员正文返回以下错误 "hint": "也许你的意思是引用列 "users->user_group.user_uuid"。",
我有 3 个模型用户、组和 user_group。这些关系已根据文档和无数其他文章和视频进行定义。
用户模型
module.exports = (sequelize, DataTypes) => {
const user = sequelize.define(
"user",
{
uuid: {
type: DataTypes.STRING,
primaryKey: true,
allowNull: false,
unique: true,
},
username: {
type: DataTypes.STRING,
unique: true,
allowNull: false,
},
{
freezeTableName: true,
}
);
user.associate = (models) => {
user.belongsToMany(models.group, {
// as: "userUuid",
through: models.user_group,
foreignKey: "user_uuid",
});
};
return user;
};
组模型
module.exports = (sequelize, DataTypes) => {
const group = sequelize.define(
"group",
{
uuid: {
type: DataTypes.STRING,
primaryKey: true,
allowNull: false,
unique: true,
},
title: {
type: DataTypes.STRING,
unique: true,
allowNull: false,
},
},
{
freezeTableName: true,
}
);
group.associate = (models) => {
group.belongsToMany(models.user, {
// as: "groupUuid",
through: models.user_group,
foreignKey: "group_uuid",
});
};
return group;
};
用户组模型
module.exports = (sequelize, DataTypes) => {
const user_group = sequelize.define(
"user_group",
{
uuid: {
type: DataTypes.STRING,
primaryKey: true,
allowNull: false,
unique: true,
},
user_uuid: {
type: DataTypes.STRING,
allowNull: false,
references: {
model: "user",
key: "uuid",
},
},
group_uuid: {
type: DataTypes.STRING,
allowNull: false,
references: {
model: "group",
key: "uuid",
},
},
author: {
type: DataTypes.STRING,
unique: true,
allowNull: true,
},
},
{
freezeTableName: true,
}
);
user_group.associate = (models) => {
user_group.belongsTo(models.user, {
foreignKey: "user_uuid",
});
user_group.belongsTo(models.group, {
foreignKey: "group_uuid",
});
};
return user_group;
};
非常感谢任何帮助,谢谢!
【问题讨论】:
标签: node.js postgresql sequelize.js