我使用后继orm。我有2个唯一列的简单模型
const DataTypes = require('sequelize')
const orm = require('./../builder')
module.exports = orm.define('users', {
id: {
type: DataTypes.INTEGER,
autoIncrement: true,
primaryKey: true
},
email: {
type: DataTypes.STRING(255),
allowNull: false
},
login: {
type: DataTypes.STRING(255),
allowNull: false
},
password_hash: {
type: DataTypes.STRING(128),
allowNull: false
}
},
{
indexes: [
{
unique: true,
fields: ['email', 'login']
}
],
timestamps: false
})
我想创建没有重复的行。我只是使用findOrCreate事务方法:
Users.sequelize.transaction((tx) => {
return Users.findOrCreate({
where: {
email: email,
login: login
},
defaults: {
password_hash: passwordHash
}
})
})
.spread((user, created) => {
console.log(created)
console.log(user.get({
plain: true
}))
})
当我发送所有不同的参数后,一切都很好。但是,如果我发送了两个值差之一,第二个值等于错误Unhandled rejection SequelizeUniqueConstraintError: Validation error
工作参数示例:
第一条记录:
{
'email': 'x',
'login': 'y',
'password_hash': 123
}
第二条记录:
{
'email': 'z',
'login': 's',
'password_hash': 123
}
无法正常工作的参数示例: 第一条记录:
{
'email': 'x',
'login': 'y',
'password_hash': 123
}
第二条记录:
{
'email': 'x',
'login': 'z',
'password_hash': 123
}