mysql - FindOrCreate 具有 2 个唯一列
问题描述
我正在使用sequelise 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
}
解决方案
推荐阅读
- c - What does void actually mean? How is it usable in this weird way?
- python - 如何在水平视频中找到不同的帧,使它们没有重叠?
- python-2.7 - 如何以这种 (0xe4, 0x56, 0x45) 形式通过此 AES 256 算法加密和解密数据。它是由 unicode\utf-8 通过将 \x 替换为 0x 制成的
- reactjs - next.js 打字稿中的递增和递减按钮功能
- javascript - 单击后展开一个部分时,如何折叠该部分的其余部分?
- python - 我收到此错误,不支持 ** 或 pow() 的操作数类型:'str' and 'int'
- html - 如何在没有多个函数的情况下显示多个 CountAPI 值
- java - 打包的 Spring Boot 应用程序不会将其余 api 错误解析为消息
- javascript - 如何让幻灯片默认显示?
- python - python中的plt.hist函数没有显示正确的指数分布