我正在使用Sequelize作为ORM和PostgreSQL引擎。使用原始查询时,我可以创建一个表,并且具有“CHECK”约束的列,例如
CREATE TABLE products (
product_no integer,
name text,
price numeric CHECK (price > 0)
);
在文档中,在定义模型时,我无法在Sequelize中找到这样做的方法。有没有办法做到这一点?我不想重新发明轮子;)
谢谢!
答案 0 :(得分:2)
module.exports = {
up: (queryInterface, Sequelize) => {
return queryInterface.createTable('Products', {
product_no: {
type: Sequelize.INTEGER
},
price: {
type: Sequelize.NUMERIC
},
name: {
type: Sequelize.TEXT
}
}).
then(() => queryInterface.addConstraint('Products', ['price'], {
type: 'check',
where: {
price: {
[Sequelize.Op.gt]: 0
}
}
}));
},
down: (queryInterface, Sequelize) => {
return queryInterface.dropTable('Products');
}
};
答案 1 :(得分:-4)
var Product = sequelize.define('product', {
price: {
validate: {
min: 0 // Only allow values >= 0
}
}
});
您还可以设置自定义验证规则:
var Product = sequelize.define('product', {
price: {
validate: {
isPositive: function (value) {
return value > 0; // Don't allow 0.
}
}
}
});