我有两张桌子,process和constraint_process_type。
关系为process.type= constraint_process_type.value。
里面基本上有一个 ID 字段作为constraint_process_type代理键,但不用于连接。该value字段是我需要使用的字段。
我似乎无法让 Sequalize 和 AdminBro 为我工作。
过程:
module.exports = (sequelize, DataTypes) => {
const Process = sequelize.define(
"Process",
{
process_id: {
type: DataTypes.INTEGER,
primaryKey: true,
autoIncrement: true,
},
name: DataTypes.STRING,
description: DataTypes.STRING,
type: {
type: DataTypes.STRING,
},
priority: DataTypes.INTEGER,
dependency_logic: DataTypes.STRING,
insert_date: { type: DataTypes.DATE, allowNull: false },
update_date: {
type: DataTypes.DATE,
allowNull: true,
defaultValue: DataTypes.NOW,
},
},
{
tableName: "process",
createdAt: "insert_date",
updatedAt: "update_date",
freezeTableName: true,
}
);
Process.associate = function (models) {
Process.belongsTo(models.ConstraintProcessType, {
foreignKey: "type",
targetKey: "value",
});
};
return Process;
};
约束进程类型:
module.exports = (sequelize, DataTypes) => {
const ConstraintProcessType = sequelize.define(
"ConstraintProcessType",
{
constraint_process_type_id: { type: DataTypes.INTEGER },
value: { type: DataTypes.STRING, primaryKey: true },
comment: DataTypes.STRING,
insert_date: { type: DataTypes.DATE, allowNull: false },
update_date: {
type: DataTypes.DATE,
allowNull: true,
defaultValue: DataTypes.NOW,
},
},
{
tableName: "constraint_process_type",
createdAt: "insert_date",
updatedAt: "update_date",
freezeTableName: true,
}
);
return ConstraintProcessType;
};
Sequelize 和 AdminBro 最终做的是用表type中的 ID 字段替换实际值constraint_process_type:
根本不是我想要的。我希望关系存在,但我不需要他们用 ID 替换实际值。
对这个有什么想法吗?
