我正在为我的模型关联使用 Sails 和 Waterline,但我不确定要做什么才能修复我在尝试更新 PageChild 对象时收到的错误。
module.exports = {
tableName: 'Page',
adapter: 'mysql',
autoCreatedAt: false,
autoUpdatedAt: false,
attributes: {
Id: {type: 'integer', autoIncrement: true, primaryKey: true},
pageChildren: {
collection: 'PageChild',
via: 'Page'
}
},
};
module.exports = {
tableName: 'PageChild',
adapter: 'mysql',
attributes: {
Id: {type: 'integer', autoIncrement: true, primaryKey: true},
Page: {
model: 'Page',
columnName: 'PageId'
}
}
};
模型关联非常适合从 Page 对象填充 pageChildren 或从任何 pageChildren 返回 Page 对象。但是,我在尝试创建或更新 PageChild 对象时遇到了这个外键问题。
在 mysql 数据库中,Page 表具有“Id”属性,而 PageChild 表具有“Id”和“PageId”属性。
错误是不言自明的:
foreign key constraint fails CONSTRAINT `PageChild_Page_Id_fk` FOREIGN KEY (`PageId`) REFERENCES `Page` (`Id`)
规则是,您只能在子表中添加或更新已存在于父表中的值。因此,在插入时,请确保您尝试插入子表的值已经存在于父表中。
我是一名优秀的程序员,十分优秀!