[英]How to add a case-insensitive unique constraint in a SequelizeJS Model when using Postgresql?
var Model = sequelize.define('Company', {
name: {
type: DataTypes.STRING,
unique: true
}
}
在上面的示例中, unique: true 區分大小寫。 它允許將“sample”和“Sample”都保存在數據庫中。 sequelize 中是否有內置方法可以做到這一點,而無需編寫自定義驗證器?
我建議添加一個功能獨特的索引,如下所示: http : //www.postgresql.org/message-id/c57a8ecec259afdc4f4caafc5d0e92eb@mitre.org
var Model = sequelize.define('Company', {
name: {
type: DataTypes.STRING
}
},
{
indexes: [
{
unique: true,
name: 'unique_name',
fields: [sequelize.fn('lower', sequelize.col('name'))]
}
]
});
2022 年 8 月 1 日更新。 我在嘗試解決同樣的問題時偶然發現了這個問題,我帶來了好消息! 只要您使用 Postgres 或 SQLite,您就可以將數據類型設置為type: DataTypes.CITEXT
並且您的值將在數據庫中保留它們的大小寫,同時如果您嘗試添加另一個條目而不考慮大小寫,也會出現驗證錯誤。
TLDR:如果列類型為CITEXT
, testuser
和TestUser
將引發驗證錯誤。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.