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

时间:2015-05-22 08:15:48

标签: 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
    }
  }
};

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

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

谢谢!

1 个答案:

答案 0 :(得分:5)

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

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

我认为这不是您正在寻找的解决方案,但我担心这是您目前最好的解决方案。希望它有所帮助。