Ich erstelle eine selbst-Referenzierung von "anglesomeToMany" Beziehung mit Sequelize mit einem Modell als Through-Argument.Sequelize gehörtToMany Selbstreferenz nicht erstellen Fremdschlüssel
Wenn jedoch die Tabelle erstellt wird, erstellt sie nur einen Fremdschlüssel für eine der Beziehungen.
Modell:
const client = sequelize.define('client', {
ClientId: {
type: DataTypes.UUID,
primaryKey: true,
allowNull: false,
defaultValue: DataTypes.UUIDV4()
},
AccessMode: {
type: DataTypes.ENUM('allow_all', 'deny_all', 'selective'),
allowNull: false
}
}, {
classMethods: {
associate: function (models) {
// Tons of other relationships here
client.belongsToMany(models.client, {
through: models.clientAccess,
as: 'clientsWithAccess',
foreignKey: 'ClientId'
});
client.belongsToMany(models.client, {
through: models.clientAccess,
as: 'accessToClients',
foreignKey: 'AccessingClientId'
});
}
}
});
Das Durch Modell:
const clientAccess = sequelize.define('clientAccess', {
Access: {
type: DataTypes.ENUM('allow', 'deny'),
allowNull: false
}
}, {
timestamps: false
});
Die resultierende Tabelle hat nur die Spalte Access und AccessingClientId. Aus irgendeinem Grund wird AccessingClientId als Primärschlüssel festgelegt.
Wenn ich die Platzierungen der AngiesToMany() -Anweisungen wechseln, wird der Name des Feldes in der Tabelle auch umgekehrt.