node.js - Sequelize:TypeError:hasOne 不是函数
问题描述
嗨,我是 Sequelize 的新手,hasOne 关联对我不起作用我正在尝试将两个表作为一个表
- 包含经销商名称和描述的经销商
- DealerProducts 包含 Dealers 产品和价格以及 table1 作为 FKEY(我希望 hasOne 为我制作 FKEY)
因此,我为每个文件制作了 3 个文件,然后制作了一个 index.js 文件来收集它们并进行相关关联
以下是这些文件:
经销商模型.js
module.exports = (sequelize = require('../db')) => {
const { DataTypes } = require('sequelize');
const Dealer = sequelize.define('Dealer', {
did: {
type: DataTypes.UUID,
defaultValue: DataTypes.UUIDV4,
allowNull: false,
primaryKey: true
},
name: {
type: DataTypes.STRING,
allowNull: false,
unique: true,
validate: {
len: [1, 50]
}
},
description: {
type: DataTypes.STRING,
allowNull: true,
},
}, {
tableName: 'dealers',
timestamps: true,
createdAt: 'created_at',
updatedAt: 'updated_at',
// paranoid: true
})
return Dealer;
}
经销商-产品-model.js
module.exports = (sequelize = require('../db')) => {
const { DataTypes } = require('sequelize');
const DealerProduct = sequelize.define('DealerProduct', {
dpid: {
type: DataTypes.UUID,
defaultValue: DataTypes.UUIDV4,
allowNull: false,
primaryKey: true
},
product_name: {
type: DataTypes.STRING,
allowNull: false,
unique: true,
validate: {
len: [1, 100]
}
},
type: {
type: DataTypes.STRING,
allowNull: true,
validate: {
len: [1, 100]
}
},
description: {
type: DataTypes.TEXT,
allowNull: true
},
price: {
type: DataTypes.DECIMAL(10, 2),
allowNull: false
},
quantity: {
type: DataTypes.INTEGER,
allowNull: false
}
}, {
tableName: 'dealer_products',
timestamps: true,
createdAt: 'created_at',
updatedAt: 'updated_at',
// paranoid: true
})
return DealerProduct;
}
然后是 index.js
module.exports = async (sequelize = require('../db')) => {
const { DataTypes } = require('sequelize');
const User = require('./user-model');
const Dealer = require('./dealers-model');
const DealerProduct = require('./dealer-products-model');
User(sequelize)
Dealer(sequelize)
DealerProduct(sequelize)
DealerProduct.hasOne(Dealer, {
foreignKey: {
type: DataTypes.UUID,
allowNull: false,
name: "dealers_did"
}
});
Dealer.belongsTo(DealerProduct);
sequelize.sync({alter: true}); //force: true
}
这是为我的 postgres 制作表格,但关联不起作用,因为我没有为 DealerProducts 制作 FKEY 列
这是我得到的错误
TypeError: DealerProduct.hasOne 不是函数
我哪里错了?
解决方案
更新
我的回答很简单,将 Dealer 和 DealerProduct 保存为变量,然后使用变量作为 hasOne 示例:
const dealer = Dealer(sequelize)
const dealerProduct = DealerProduct(sequelize)
dealer.hasOne(dealerProduct, {
foreignKey: {
type: DataTypes.UUID,
allowNull: false,
name: "dealers_did"
}
});
dealerProduct.belongsTo(dealer);```
So this worked
推荐阅读
- linux - 无法在嵌入式平台上的套接字上运行 fcntl
- powerbi - PowerBI/Powerquery - “应用更改”时“从传输流接收到意外的 EOF 或 0 字节”
- python - 初学者疯狂 - AttributeError:'Window'对象没有属性'tk'
- javascript - 何从带有阴影 dom 的 Web 组件内的正文中获取滚动事件
- python - Django Rest 框架和 Vue.js;通过谷歌账户登录;“用户已使用此电子邮件地址注册。”
- pytorch - 如何在 Pytorch 中清除手动优化器的渐变
- python-3.x - 如何在视图中获得点击的项目
- es6-modules - 闭包编译器在输出中生成很长的变量名
- python-3.x - ROUND_HALF_DOWN 的行为,Python 3.9.5,十进制模块
- c# - 多个客户端连接到服务器