Tôi chỉ cố gắng để chạy mã của bạn, và các hàng dường như được tạo ra tốt:
CREATE TABLE IF NOT EXISTS `main_dashboard` (`title` VARCHAR(255), `id` INTEGER NOT NULL auto_increment , `idClient` INTEGER, PRIMARY KEY (`id`)) ENGINE=InnoDB;
CREATE TABLE IF NOT EXISTS `main_client` (`id` INTEGER NOT NULL auto_increment, `clientId` INTEGER, PRIMARY KEY (`id`)) ENGINE=InnoDB;
clientId
được thêm vào main_client
, và idClient
được thêm vào main_dashboard
Có vẻ như bạn có một chút bối rối phương thức hasOne thực hiện. Mỗi khi bạn gọi hasOne một liên kết được tạo ra, do đó, mã của bạn có hiệu quả kết hợp hai bảng hai lần. Các phương pháp bạn đang tìm kiếm là belongsTo
Nếu bạn muốn mỗi khách hàng để có một bảng điều khiển, mã sẽ được như sau:
MainClient.hasOne(MainDashboard, { foreignKey: 'clientId' })
MainDashboard.belongsTo(MainClient, { foreignKey: 'clientId' })
Điều này tạo ra một lĩnh vực ClientId trên bàn main_dashboard, mà liên quan đến trường id của bảng main_client
Trong ngắn hạn belongsTo
thêm mối quan hệ vào bảng mà bạn đang gọi phương thức, hasOne
thêm nó vào bảng được đưa ra làm đối số.
Nguồn
2013-01-05 20:27:25
OK, tải xuống. Trên thực tế, đây chỉ là một ví dụ ngu ngốc. Những gì chúng ta muốn là các ràng buộc khóa cấp cơ sở dữ liệu, giống như @dankohn nói. – swampcypress