使用WaterlineJS对多个属性的唯一性约束

Rap*_*aya 3 mysql node.js sails.js waterline

我创建了以下连接表,以链接用户和游戏模型.

我想在(用户,脚)上创建唯一性约束.

这是我的代码:

module.exports = {

  attributes: {
    foot:{
        type: 'integer',
        foreignKey: true,
        references: 'foot',
        on: 'id'
    },
    user:{
        type: 'integer',
        foreignKey: true,
        references: 'user',
        on: 'id'        
    },
    statut:{
        type: 'integer', // 0 invited, 1 playing, 2 denied, 3 organisator
        defaultsTo: 0
    }
  }
};
Run Code Online (Sandbox Code Playgroud)

我正在使用"sails-mysql"适配器.

水线是否处理,或者我应该直接在我的数据库中处理?

谢谢 !

tau*_*que 5

之前没有做过这样的事.你的问题似乎很有趣.所以我研究了一下.在水线的github存储库中存在多个问题.一个是问题#244,另一个是问题#221.他们都没有任何迹象表明你的问题可以解决,我认为WaterlineORM 仍然无法做到.

但是当您使用mysql时,可以通过从数据库适配器执行原始SQL查询来实现.在您的config/bootstrap.js脚本中,您可以编写脚本以检查数据库中是否存在此约束.如果它可用,那么你将不会做任何事情,但如果它不可用,那么你将创建新约束来强制执行唯一性.

我认为这不是您正在寻找的解决方案,但我担心这是您目前最好的解决方案.希望能帮助到你.