Sails.js复合唯一字段

use*_*080 10 sails.js waterline

这个模型以牺牲重复数据和一般丑陋为代价给了我想要的效果:

//Example
var Example = {
    attributes: {
        foo: { 
            type: 'string',
            required: true
        },
        bar: {
            type: 'string',
            required: true,
        },
        baz: {
            type: 'integer',
            required: true,
            min: 1
        },
        foobar: {
            type: 'string',
            unique: true
        }
    },
    beforeValidation : function(values,cb) {
        values.foobar = values.foo+values.bar;
        cb();
    }
};
module.exports = Example;
Run Code Online (Sandbox Code Playgroud)

是否有更好的策略来创建复合唯一键?

Joh*_*alt 6

在帆中没有办法直接这样做,请参阅https://github.com/balderdashy/waterline/issues/221.最佳解决方案是直接在您计划使用的数据库中执行此操作.

  • 在数据库中执行此操作的问题是,当您要将复合主键作为外键引用到另一个表中时,Waterline ORM将不会为您执行任何操作.你最终会自己实现ORM的这一部分.在这种情况下,提问者的解决方案可能比在数据库级别实施它更好. (2认同)