Sequelize 中具有另一个属性范围的唯一属性
Unique attribute with scope of another attribute in Sequelize
是否可以在 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
这可以通过 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'}
});
是否可以在 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
这可以通过 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'}
});