SailsJS上的外键约束

Bip*_*ari 5 database relational-database node.js sails.js waterline

这是我的大学模特

module.exports = {

  attributes: {
      name:{
        type:'string',
        required:true
      },
      location:{
            type:'string',
            required:true
        },
        faculties:{
            collection:'faculty',
            via:'college'
        }
  }
};
Run Code Online (Sandbox Code Playgroud)

这是我的教师模型

module.exports = {

  attributes: {
        name:{
            type:'string',
            required:true
        },
        description:{
            type:'string'
        },
        college:{
            model:'college',
        required:true
        }
        ,
        years:{
            collection:'year',
            via:'faculty'
        }
  }
};
Run Code Online (Sandbox Code Playgroud)

我的问题是我可以Facultycollege属性中添加任何值的new .如果我没有3000大学的大学,我仍然可以添加它,但是college当我列出所有院系时属性不会显示.如何防止它添加具有无效大学ID的教师?

Mee*_*ker 5

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

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

https://groups.google.com/forum/#!topic/sailsjs/ALMxbKfnCIo

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

或者,您可以通过签入beforeValidate()afterValidate()在您的教师模型中设置您的教师模型之前验证大学的价值.