Sequelize模型中无法识别的数据类型

问题描述 投票:0回答:1

我正在尝试在我的postgresql模型中创建一个名为“ provider”的属性,并将其数据类型设置为Object(请参见下面的代码)。但是,我收到了错误Error: Unrecognized datatype for attribute "segment.provider"

我假设发生此错误,因为我尚未指定“ provider”属性的数据类型实际上是什么(即:type: DataTypes.OBJECT)。据我所知,Sequelize文档中没有任何东西可以证明我的要求。任何和所有帮助将不胜感激。谢谢!

module.exports = (sequelize, DataTypes) => {
  const Segment = sequelize.define(
    'segment',
    {
      id: {
        type: DataTypes.INTEGER,
        autoIncrement: true,
        primaryKey: true
      },
      provider: {
        providerName: DataTypes.STRING,
        externalId: DataTypes.STRING,
        email: DataTypes.STRING,
        privacyPolicy: DataTypes.STRING
      }
    },
    {
      freezeTableName: true,
      tableName: 'segment'
    }
  );

  return Segment;
}
node.js database postgresql sequelize.js
1个回答
0
投票
无法识别的数据类型

模型(表)上定义的每个字段都映射到数据库的列中。这就是sequelize的基本功能。

现在,在PostgreSQL数据库上是否有一个作为对象的字段?

对于您要执行的操作,您只需要使用表之间的关联。创建一个名为provider的新模型(表):

并在示例中添加关联,如下所示:

module.exports = (sequelize, DataTypes) => {
  const Provider = sequelize.define(
    'provider',
    {
      id: {
          type: DataTypes.INTEGER,
          autoIncrement: true,
          primaryKey: true
      },
      name: {
          type: DataTypes.STRING
      },
      email: {
          type: DataTypes.STRING
      },
      privacyPolicy: {
          type: DataTypes.STRING
      }
    },
    {
      freezeTableName: true,
      tableName: 'provider'
    }
  );

  // Apply the accosiation:
  Provider.hasMany /* or has one */ (Segment, {foreignKey: 'provider_id'});
  return Provider;
}

并且在Segment模型中添加外键和对Provider的引用

module.exports = (sequelize, DataTypes) => {
  const Segment = sequelize.define(
    'segment',
    {
      id: {
            type: DataTypes.INTEGER,
            autoIncrement: true,
            primaryKey: true
      },
      provider_id: {
          type: DataTypes.INTEGER,
          references: {
              model: 'provider',
              key: 'id
          }
      }
    },
    {
      freezeTableName: true,
      tableName: 'segment'
    }
  );

  // Apply the accosiation:
  Segment.belongsTo(Provider, {foreignKey: 'id'}); 
  return Segment;
}
© www.soinside.com 2019 - 2024. All rights reserved.