gpt4 book ai didi

node.js - 如何在sequelize中关联jsonb类型字段和表?

转载 作者:行者123 更新时间:2023-12-03 22:30:09 25 4
gpt4 key购买 nike

我的 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/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com