SailsJS上的外键约束

时间:2015-04-29 10:05:27

标签: database node.js relational-database sails.js waterline

这是我的大学模特

module.exports = {

  attributes: {
      name:{
        type:'string',
        required:true
      },
      location:{
            type:'string',
            required:true
        },
        faculties:{
            collection:'faculty',
            via:'college'
        }
  }
};

这是我的教师模式

module.exports = {

  attributes: {
        name:{
            type:'string',
            required:true
        },
        description:{
            type:'string'
        },
        college:{
            model:'college',
        required:true
        }
        ,
        years:{
            collection:'year',
            via:'faculty'
        }
  }
};

我的问题是,我可以在Faculty属性中添加任意值的新college。如果我没有具有3000 id的大学,我仍然可以添加它,但是当我列出所有院系时,college属性将不会显示。如何防止它增加一个无效大学ID的教师呢?

1 个答案:

答案 0 :(得分:5)

目前,水线不会以您描述的方式创建外键约束。它只创建相关的字段。

您可以使用不同的库而不是Waterline,例如Sequelize.js,这里有关于如何进行此操作的链接

https://stackoverflow.com/a/10080841/4801673

如果您使用的是SQL数据库,则可以自己手动创建外键约束。

或者,您可以通过在教师模型上查看beforeValidate()afterValidate()来确认大学的价值,然后再将其设置为您的教师模型。