如何解决如何在 Sequelize 中更新外键belongsTo
我有以下模型:
'use strict';
const {Model} = require('sequelize');
module.exports = (sequelize,DataTypes) => {
class Key extends Model {
static associate(models) {
Key.belongsTo(models.User,{
foreignKey: 'userId',onDelete: 'CASCADE'
});
}
};
Key.init({
keyType: DataTypes.STRING,key: DataTypes.JSON
},{
sequelize,modelName: 'Key',});
return Key;
};
然后我尝试在收到 userId
、keyType
和 key
后创建一行:
...
const Key = KeyModel(sequelize,Sequelize);
const createKey = async (userid,keyType,key) => {
const result = await Key.create({userId,key});
return result;
}
该行在数据库中成功创建,我得到一个 ID(createdAt
和 updatedAt
也更新了),但 userId
为空。
我应该如何将它传递给 create
方法,以便将值传递给数据库?我在模型中遗漏了什么吗?
解决方法
我认为你应该像下面那样改变你的代码。
'use strict';
const {Model} = require('sequelize');
module.exports = (sequelize,DataTypes) => {
class Key extends Model {
static associate(models) {
Key.belongsTo(models.User,{
foreignKey: 'keyId',targetKey: 'userId'
onDelete: 'CASCADE'
});
}
};
Key.init({
keyId: DataTypes.STRING,keyType: DataTypes.STRING,key: DataTypes.JSON
},{
sequelize,modelName: 'Key',});
return Key;
};
const Key = KeyModel(sequelize,Sequelize);
const createKey = async (userId,keyType,key) => {
const result = await Key.create({keyId: userId,key});
return result;
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。