Menggunakan belongsTo mendefinisikan kepemilikan model terkait. Untuk menjelaskan ini secara lebih rinci saya akan merujuk pada contoh yang dikutip dari tutorial
Project.hasMany(Task);
Task.belongsTo(Project);
Misalnya Anda tidak lagi tertarik dengan tugas proyek yang dihapus. Dalam hal ini Anda harus menghapus tugas secara manual, jika Anda tidak mendefinisikan belongsTo asosiasi. belongsTo menetapkan kepemilikan proyek atas tugas-tugasnya dan database akan secara otomatis menghapus tugas-tugas milik proyek yang dihapus juga. Ini disebut cascading delete dan dapat menghubungkan beberapa tabel.
Jika Anda menjalankan cuplikan kode berikut
const Project = sequelize.define('project', {
name: Sequelize.STRING
});
const Task = sequelize.define('task', {
name: Sequelize.STRING
});
Project.hasMany(Task);
Task.belongsTo(Project);
dalam skrip sekuel dan lihat hasilnya
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);
Anda akan melihat perilaku berjenjang diatur dalam pembuatan tabel tugas.
Begitu banyak yang dikatakan, jawaban akhirnya adalah:itu tergantung. Penggunaan belongsTo bisa sangat berguna atau akan berakibat fatal jika Anda lebih suka menyimpan tugas proyek yang dihapus. Hanya gunakan belongsTo jika masuk akal dalam konteks aplikasi Anda.