SailsJS 的外键约束
Foreign key constraint on SailsJS
这是我的大学模型
module.exports = {
attributes: {
name:{
type:'string',
required:true
},
location:{
type:'string',
required:true
},
faculties:{
collection:'faculty',
via:'college'
}
}
};
这是我的 Faculty 模型
module.exports = {
attributes: {
name:{
type:'string',
required:true
},
description:{
type:'string'
},
college:{
model:'college',
required:true
}
,
years:{
collection:'year',
via:'faculty'
}
}
};
我的问题是我可以在 college
属性中添加具有任何值的新 Faculty
。如果我没有 3000 id 的大学,我仍然可以添加它,但是当我列出所有院系时 college
属性不会显示。如何防止它添加具有无效大学 ID 的教师?
目前 waterline 不会以您描述的方式创建外键约束。它只创建关联字段。
您可以使用不同的库而不是 Waterline,例如 Sequelize.js 这里是 link 关于如何做到这一点的
https://groups.google.com/forum/#!topic/sailsjs/ALMxbKfnCIo
如果您使用的是 SQL 数据库,您可以自己手动创建外键约束。
或者,您可以通过在教员模型中签入 beforeValidate()
或 afterValidate()
来验证大学的价值,然后再将其设置到教员模型中。
这是我的大学模型
module.exports = {
attributes: {
name:{
type:'string',
required:true
},
location:{
type:'string',
required:true
},
faculties:{
collection:'faculty',
via:'college'
}
}
};
这是我的 Faculty 模型
module.exports = {
attributes: {
name:{
type:'string',
required:true
},
description:{
type:'string'
},
college:{
model:'college',
required:true
}
,
years:{
collection:'year',
via:'faculty'
}
}
};
我的问题是我可以在 college
属性中添加具有任何值的新 Faculty
。如果我没有 3000 id 的大学,我仍然可以添加它,但是当我列出所有院系时 college
属性不会显示。如何防止它添加具有无效大学 ID 的教师?
目前 waterline 不会以您描述的方式创建外键约束。它只创建关联字段。
您可以使用不同的库而不是 Waterline,例如 Sequelize.js 这里是 link 关于如何做到这一点的
https://groups.google.com/forum/#!topic/sailsjs/ALMxbKfnCIo
如果您使用的是 SQL 数据库,您可以自己手动创建外键约束。
或者,您可以通过在教员模型中签入 beforeValidate()
或 afterValidate()
来验证大学的价值,然后再将其设置到教员模型中。