belongsTo
gebruiken definieert het eigendom van de bijbehorende modellen. Om dit in meer detail uit te leggen, verwijs ik naar het voorbeeld uit de tutorials
Project.hasMany(Task);
Task.belongsTo(Project);
Stel dat u niet langer geïnteresseerd bent in de taken van een verwijderd project. In dat geval zou u de taken handmatig moeten verwijderen, als u de belongsTo
. niet had gedefinieerd vereniging. belongsTo
vestigt een eigendom van projecten over zijn taken en de database zal automatisch ook de taken verwijderen die bij het verwijderde project horen. Dit heet cascading delete
en kan over meerdere tabellen worden geketend.
Als u het volgende codefragment uitvoert
const Project = sequelize.define('project', {
name: Sequelize.STRING
});
const Task = sequelize.define('task', {
name: Sequelize.STRING
});
Project.hasMany(Task);
Task.belongsTo(Project);
in een vervolgscript en bekijk de uitvoer
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);
u zult merken dat het trapsgewijze gedrag wordt ingesteld bij het maken van de takentabel.
Zoveel gezegd, het uiteindelijke antwoord is:het hangt ervan af. Het gebruik van belongsTo
kan erg handig zijn of fataal zijn als u liever de taken van het verwijderde project wilt behouden. Gebruik alleen belongsTo
als het zinvol is in de context van uw aanvraag.