是否可以在Sequelize模型上创建一个仅强制在另一个属性范围内的唯一性的属性?
例如,让我们说foo
必须是唯一的:
Thing.create({ foo: 1, bar: 1 });
Thing.create({ foo: 1, bar: 1 }); // Uniqueness violation!
但我希望允许以下内容:
Thing.create({ foo: 1, bar: 1 });
Thing.create({ foo: 1, bar: 2 }); // Allowed since bar is a different value
答案 0 :(得分:1)
这可以通过compositeIndex
完成。
定义模型时,传递给unique
验证的值可以是字符串。如果您提供的字符串与另一个属性上的另一个唯一验证值匹配,则这些属性将创建一个复合索引,该索引将强制实现这些值组合的唯一性。
var Foo = sequelize.define('Foo', {
someUnique: {type: Sequelize.STRING, unique: true},
uniqueOne: { type: Sequelize.STRING, unique: 'uniqueCombo'},
uniqueTwo: { type: Sequelize.INTEGER, unique: 'uniqueCombo'}
});