Nous avons deux modèles, les utilisateurs et les articles. Sous user.jsComment puis-je créer une contrainte composite unique avec des clés étrangères et des clés normales dans Sequelize?
User = Model.define('User', {
id: {
type: DataType.UUID,
defaultValue: DataType.UUIDV1,
primaryKey: true,
},
});
Et sous Item.js
Item = Model.define('Item', {
id: {
type: DataType.UUID,
defaultValue: DataType.UUIDV1,
primaryKey: true,
},
});
Voici leur association, un utilisateur peut avoir plusieurs éléments.
User.hasMany(Items, {
foreignKey: {
allowNull: false,
name: 'itemId',
},
onUpdate: 'cascade',
onDelete: 'cascade',
});
Supposons que chaque utilisateur ne dispose que d'un type d'élément. Comment ajouter une contrainte unique pour cela? Le code suivant ne fonctionne pas.
User.hasMany(Items, {
foreignKey: {
allowNull: false,
name: 'itemId',
unique: 'userItemUnique',
},
onUpdate: 'cascade',
onDelete: 'cascade',
});
Item = Model.define('Item', {
id: {
type: DataType.UUID,
defaultValue: DataType.UUIDV1,
primaryKey: true,
unique: 'userItemUnique',
},
});
Pourquoi vous devez ajouter la contrainte par Sequelize-cli? Est-ce qu'il n'y a aucun moyen de le faire via Sequelize lui-même? – AstroBoogie
Vous pouvez le faire en utilisant les index [This] (https://github.com/sequelize/sequelize/issues/3468) donner des détails à ce sujet Bien que ce ne soit pas ' t sentir très propre façon de faire – Shivam