我的 Postgre 数据库中有两个表。
id name customers
uuid varchar jsonb
id name
uuid varchar
这是定义的项目模型。
const project = (sequelize, DataTypes) => {
const Project = sequelize.define('project', {
id: {
type: DataTypes.UUID,
defaultValue: DataTypes.UUIDV4,
primaryKey: true,
},
name: {
type: DataTypes.STRING,
allowNull: false,
unique: true,
customers: {
type: DataTypes.JSONB,
defaultValue: [],
allowNull: true,
}
})
return Project
}
export default project
这是定义的项目模型。export default (sequelize, DataTypes) => {
return sequelize.define(
'customer',
{
id: {
type: DataTypes.UUID,
defaultValue: DataTypes.UUIDV4,
primaryKey: true,
},
name: {
type: DataTypes.STRING,
allowNull: true,
},
)}
}
因此,项目表中的客户字段具有 json 类型值。例如(uuid 数组):
customers = ["0000-0000-0000-0000", "1111-1111-1111-1111"];
在这种情况下,如何在项目和客户表之间添加关联?理想情况下,我希望在查找所有项目时包含与客户匹配的 id,如下所示。
const getProjects = async () => {
try {
return await models.Projects.findAll({
include: [{
model: models.Customers // It should include all customers for a project
}]
})
} catch (error) {
throw error
}
}
希望早日收到你的消息。谢谢你。
最佳答案
你的数据模型是错误的,只会给你带来麻烦。如果要对两个实体之间的多对多关系建模,请创建一个“连接表”,其中包含两个相关表的外键。主键是两个外键的组合。
关于node.js - 如何在sequelize中关联jsonb类型字段和表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67732717/