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() 来验证大学的价值,然后再将其设置到教员模型中。