简体   繁体   中英

Sequelize: Create multiple self association

I have model "Subject" which has self relationship with it self "Successor" and "Predecessor". For that i required to create two foreign key "successorId" and "predecessorId".

I am able to create relation but don't how to add entry in foreign key.

Model Subject:

const { sequelize } = require('../config/databaseInit');
const { DataTypes, Model } = require('sequelize');

class Subject extends Model {}

Subject.init(
  {
    subjectCode: {
      type: DataTypes.STRING(40),
      unique: true,
    },
    subjectName: {
      type: DataTypes.STRING(60),
      allowNull: false,
    },
    ...
    ...
    ...
    successorId: {
      type: DataTypes.INTEGER,
      references: {
        model: 'Subject',
        key: 'id',
      },
    },
    predecessorId: {
      type: DataTypes.INTEGER,
      references: {
        model: 'Subject',
        key: 'id',
      },
    },
  },
  {
    sequelize: sequelize,
    modelName: 'Subject',
    tableName: 'Subject',
    timestamps: true,
  }
);

For example:

const sub1 = await Subject.create({....});
const sub2 = await Subject.create({....});

// None of them are working.
sub1.setSuccessorId(sub2);
sub1.setSuccessor(sub2);
sub1.update({ successorId: sub1.id });

you can identify your relation model 1-n/nn/1-n here link: https://sequelize.org/master/manual/assocs.html example:

Subject.belongsTo(models.Class, { as: 'subject', foreignKey: 'subjectId' });

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM