Usando belongsTo
definisce la proprietà dei modelli associati. Per spiegarlo più in dettaglio farò riferimento all'esempio citato dai tutorial
Project.hasMany(Task);
Task.belongsTo(Project);
Supponi di non essere più interessato alle attività di un progetto eliminato. In tal caso dovresti eliminare le attività manualmente, se non avessi definito il belongsTo
associazione. belongsTo
stabilisce una proprietà dei progetti sulle sue attività e il database eliminerà automaticamente anche le attività appartenenti al progetto eliminato. Questo è chiamato cascading delete
e può concatenare più tabelle.
Se esegui il seguente frammento di codice
const Project = sequelize.define('project', {
name: Sequelize.STRING
});
const Task = sequelize.define('task', {
name: Sequelize.STRING
});
Project.hasMany(Task);
Task.belongsTo(Project);
in uno script di sequele e guarda l'output
Executing (default): DROP TABLE IF EXISTS `projects`;
Executing (default): CREATE TABLE IF NOT EXISTS `projects` (`id` INTEGER PRIMARY KEY AUTOINCREMENT, `name` VARCHAR(255), `createdAt` DATETIME NOT NULL, `updatedAt` DATETIME NOT NULL);
Executing (default): PRAGMA INDEX_LIST(`projects`)
Executing (default): DROP TABLE IF EXISTS `tasks`;
Executing (default): CREATE TABLE IF NOT EXISTS `tasks` (`id` INTEGER PRIMARY KEY AUTOINCREMENT, `name` VARCHAR(255), `createdAt` DATETIME NOT NULL, `updatedAt` DATETIME NOT NULL, `projectId` INTEGER REFERENCES `projects` (`id`) ON DELETE SET NULL ON UPDATE CASCADE);
noterai il comportamento a cascata impostato nella creazione della tabella delle attività.
Tanto detto, la risposta finale è:dipende. L'uso di belongsTo
può tornare molto utile o sarà fatale se preferisci mantenere le attività del progetto eliminato. Usa solo belongsTo
se ha senso nel contesto della tua applicazione.