सबसे पहले, ओआरएम के लिए डेटाबेस में विदेशी कुंजी बाधाओं का उपयोग करने के बजाय आंतरिक रूप से इस तरह की चीज़ों को संभालना असामान्य नहीं है।
दूसरा, ORM के लिए जोड़ी . की आवश्यकता होना कोई असामान्य बात नहीं है सभी आंतरिक हैंडलिंग को ट्रिगर करने के लिए एसोसिएशन स्टेटमेंट्स की आप उम्मीद कर सकते हैं।
var Task = this.sequelize.define('Task', { title: Sequelize.STRING })
, User = this.sequelize.define('User', { username: Sequelize.STRING })
User.hasMany(Task)
Task.belongsTo(User)
अंत में, Sequelize वास्तव में डेटाबेस में विदेशी कुंजी घोषणाएँ लिखेगा, लेकिन केवल तभी जब आप onUpdate
के साथ किसी प्रकार की कार्रवाई (या निष्क्रियता) की घोषणा करेंगे। या onDelete
।
User.hasMany(Task, { onDelete: 'SET NULL', onUpdate: 'CASCADE' })
CREATE TABLE IF NOT EXISTS `Task` (
`id` INTEGER PRIMARY KEY,
`title` VARCHAR(255),
`user_id` INTEGER REFERENCES `User` (`id`) ON DELETE SET NULL ON UPDATE CASCADE
);