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.