【发布时间】:2022-01-14 20:52:26
【问题描述】:
对于我的电子邮件字段,我将电子邮件存储和查询为小写字符串,以避免重复电子邮件,例如 user@example.com 和 User@example.com。我在我的模型中定义了一个 set 方法,例如:
const User = sequelize.define('user', {
email: {
type: DataTypes.STRING,
unique: { msg: 'That email is already registered.' },
validate: { isEmail: { msg: 'Invalid email.' } },
set(value) {
this.setDataValue('email', value.toLowerCase().trim())
}
}
})
这可以防止使用大写字母设置电子邮件,但不会防止使用大写字母进行查询。为了避免查询,我必须记住在任何地方都使用.toLowerCase()。如果我可以在模型上定义它会更好,这样这样的查询就可以工作:
const user = await User.findOne({ where: { email: 'SomeEmail@example.com' } })
【问题讨论】:
标签: javascript node.js postgresql express sequelize.js