mysql - Sequelize 抛出错误“必须是唯一的”
问题描述
我将 Sequelize 与我的 mysql 数据库一起使用,并且与 CostumerDriverTransaction 模型作为直通表有多对多关系
当我尝试从该表中创建一行时,出现此错误"message": "driverId must be unique"
客户司机交易模型
const CostumerDriverTransaction = sequelize.define('CostumerDriverTransaction', {
costumerId: {
type:DataTypes.INTEGER,
},
driverId: {
type:DataTypes.INTEGER,
},
restaurantId: {
type:DataTypes.INTEGER,
},
orderId: DataTypes.INTEGER,
transactionId: {
type:DataTypes.INTEGER,
primaryKey:true,
},
},{});
这是协会:
index.js
db.user.belongsToMany(db.driver,{
through:db.costumerDriverTransaction,
foreignKey:{
name:'costumerId'
}
});
db.driver.belongsToMany(db.user,{
through:db.costumerDriverTransaction,
foreignKey:{
name:'driverId'
}
});
db.user.hasMany(db.costumerDriverTransaction,{
foreignKey:{
name:'costumerId'
}
});
db.driver.hasMany(db.costumerDriverTransaction,{
foreignKey:{
name:'driverId'
}
});
db.costumerDriverTransaction.belongsTo(db.user,{
foreignKey:{
name:'costumerId'
}
});
db.costumerDriverTransaction.belongsTo(db.driver,{
foreignKey:{
name:'driverId'
}
});
请问有什么问题?
解决方案
如错误所示,您需要设置driverId
为唯一,即:
const CostumerDriverTransaction = sequelize.define('CostumerDriverTransaction', {
costumerId: {
type:DataTypes.INTEGER,
},
driverId: {
type:DataTypes.INTEGER,
unique: true
},
restaurantId: {
type:DataTypes.INTEGER,
},
orderId: DataTypes.INTEGER,
transactionId: {
type:DataTypes.INTEGER,
primaryKey:true,
},
},{});
推荐阅读
- ios - 将日期时间 utc 或 gmt 转换为特定时区 EXC_BREAKPOINT 错误
- r - 如何识别R中数据帧中最小值和最大值之间的数据点范围?
- javascript - 本地存储集项目替换而不是更新
- c# - 使用 ref 参数从 dll 程序集创建 MS SQL Server 函数
- vue.js - Quasar 从 axios 上传文件
- multidimensional-array - Rust ndarray,对拥有值的算术运算
- javascript - 我如何遍历 d3.select(this)
- javascript - 在反应引导 Form.Control 中显示可编辑值
- javascript - 如何从 DocuSign JavaScript 中删除硬返回以创建 Salesforce 自定义按钮
- reactjs - TypeError:_this.props.addLead 不是反应中的函数