序列化自我关联会创建额外的列

布拉德

我用Sequelize定义了以下模型:

module.exports = function (sequelize, DataTypes) {
  var Genre = sequelize.define('Genre', {
    name: {
      type: DataTypes.STRING,
      allowNull: false
    }
  }, {
    classMethods: {
      associate: function (models) {
        Genre.hasMany(models.Genre, {as: 'subGenre'});
        Genre.belongsTo(models.Genre, {as: 'parentGenre'});
      }
    }
  });

  return Genre;
}

想法是会有父类型,并且每个子类型可以有几个子类型。运行时sync(),表创建良好,但是还有一个GenreId我无法解释的额外的列():

"id";"integer";
"name";"character varying";255
"createdAt";"timestamp with time zone";
"updatedAt";"timestamp with time zone";
"GenreId";"integer";
"parentGenreId";"integer";

解释模型的明智方法是只添加一parentGenreId列,但是我不确定如何定义仅添加一列的双向关系(类型可能有父级,类型可能有很多子级)。

如何修改模型以正确定义关系?

和罗沙

我认为您可以使用through(未经测试)

module.exports = function (sequelize, DataTypes) {
  var Genre = sequelize.define('Genre', {
    name: {
      type: DataTypes.STRING,
      allowNull: false
    }
  }, {
      classMethods: {
        associate: function (models) {
          Genre.hasMany(models.Genre, {as: 'children', foreignKey: 'ParentId'});
          Genre.belongsTo(models.Genre, {as: 'parent', foreignKey: 'ParentId'});
        }
      }
});

  return Genre;
}

所以你可以有Genre#getChilrenGenre#getParent

编辑:由于@ mick-hansen,through适用于belongsToMany,对于这种情况没有用。我的错。使用他的建议已更正

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Java自我反序列化

来自分类Dev

用关联序列化创建对象

来自分类Dev

序列化添加关联

来自分类Dev

序列化添加关联

来自分类Dev

ASP.NET Web API序列化的JSON错误:“自我引用循环”

来自分类Dev

PySpark在地图lambdas中序列化“自我”引用的对象?

来自分类Dev

ASP.NET Web API序列化的JSON错误:“自我引用循环”

来自分类Dev

序列化更新嵌套关联

来自分类Dev

映射和序列化双向关联

来自分类Dev

序列化关联hasOne,belongsTo

来自分类Dev

映射和序列化双向关联

来自分类Dev

序列化1:n关联

来自分类Dev

序列化更新嵌套关联

来自分类Dev

创建序列化模型

来自分类Dev

创建多个价格列或将它们全部序列化

来自分类Dev

我应该序列化数据还是为SQL Server CE数据库创建更多列?

来自分类Dev

序列化/反序列化携带Jackson额外信息的不可变对象

来自分类Dev

具有额外属性的Json.NET序列化;保留序列化器设置

来自分类Dev

没有额外元素的序列化列表

来自分类Dev

带有额外变量的 gson 数组反序列化

来自分类Dev

DRF 将额外的变量传递给序列化程序

来自分类Dev

序列化程序无法添加额外数据

来自分类Dev

序列化地图以获取额外的空元素

来自分类Dev

在反序列化 JSON 时,我可以添加额外的类型来组合多个 json 属性吗?

来自分类Dev

如何使用已加载的关联序列化/反序列化Ecto模型?

来自分类Dev

如何在Django-rest-framework序列化器中的关系模型中获得额外的列?

来自分类Dev

停止序列化创建表

来自分类Dev

嵌套序列化程序的创建

来自分类Dev

如何从序列化关联模型中获得价值?