我正在使用 Sequelize/MySQL 运行 ExpressJS,并非常努力地尝试让一个简单的验证器检查工作以用于唯一的电子邮件地址。
这是我的用户模型。对于我的生活,我不明白为什么这允许具有重复电子邮件地址的记录。 email.unique=true 肯定会阻止这种情况。
'use strict';
module.exports = (sequelize, DataTypes) => {
var User = sequelize.define('User', {
firstName: DataTypes.STRING,
lastName: DataTypes.STRING,
email: {
type: DataTypes.STRING,
allowNull: false,
unique: true,
validate: {
isEmail: {
msg: "Must be a valid email address",
}
}
}
}, {
indexes: [{
fields: ['email'],
unique: true,
}]
});
return User;
};
感谢任何帮助。
编辑: 这里要求的是创建用户的 Controller 代码。
const User = require('../models').User;
exports.create = (req, res) => {
User.create( req.body )
.then( user => {
res.json( user );
})
.catch( errors => {
res.json({ errors: errors.errors });
});
};
最佳答案
解决这个问题的一种方法是使用 sequelize.sync()
根据模型中指定的模式创建表如果表存在,那么你应该传递 {force: true
到 sync 方法,表将被删除并创建一个新表。
尽管由于迁移文件等问题,不强烈推荐使用 sequelize.sync()
,尤其是在生产中,但您可以通过谷歌搜索了解更多详细信息。
关于mysql - Sequelize 的唯一电子邮件地址,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48499487/