Как выполнить множественную вставку с ассоциацией при Sequelize?

#javascript #node.js #express #sequelize.js

#javascript #node.js #выражать #sequelize.js

Вопрос:

Это мои данные:

 {
    "inventoryId": "2688",
    "inventoryItems": [
        {
            "fare": "399.00",
            "passenger": {
                "age": "21",
                "email": "testing1@gmail.com",
                "gender": "MALE",
                "mobile": "9999999999",
                "name": "Ticket1",
                "primary": "true",
            },
            "Name": "5",
        },
        {
            "fare": "399.00",
            "passenger": {
                "age": "21",
                "email": "testing2@gmail.com",
                "gender": "MALE",
                "mobile": "9999999999",
                "name": "Ticket2",
                "primary": "true",
            "Name": "6",
        }
    ],
    "pickupLocation": "Bus",
    "pickupLocationId": "419",
}
 

Модели и их ассоциации!

 Two Models: Ticket amp; TicketInventory

Association: Ticket HasMany TicketInventory amp; TicketInventory BelongsTo Ticket

-------------Mode : Ticket-------------------
module.exports = (sequelize, DataTypes) => {
  class Ticket extends Model {
    static associate(models) {
      Ticket.belongsTo(models.User, { 
        foreignKey: 'userId', 
      });
      Ticket.hasMany(models.TicketInventory, { 
        foreignKey: 'ticketinventoryId', 
      });
    }
  };
  Ticket.init({
    userId: {
      type: DataTypes.INTEGER,
      onDelete: 'CASCADE',
      unique: true,
      references: {
        model: 'Users',
        key: 'id',
      }
    },
    ......................................... // Rest of the fields
    travels: {
      type: DataTypes.STRING,
      defaultValue: null
    },
  }, {
    sequelize,
    modelName: 'Ticket',
  });
  return Ticket;
};

------------------------------Model: TicketInventor---------------------
module.exports = (sequelize, DataTypes) => {
  class TicketInventory extends Model {
    
    static associate(models) {
      TicketInventory.belongsTo(models.Ticket, { 
        foreignKey: 'ticketId', 
      });
    }
  };
  TicketInventory.init({
    ticketId: {
      type: DataTypes.INTEGER,
      onDelete: 'CASCADE',
      unique: true,
      references: {
        model: 'Tickets',
        key: 'id',
      }
    },
    .......................................// Rest of the fields
    serviceTax: {
      type: DataTypes.STRING,
      defaultValue: null
    },
  }, {
    sequelize,
    modelName: 'TicketInventory',
  });
  return TicketInventory;
};




 

Теперь мне нужно добавить «inventoryId», «pickupLocation» и «pickupLocationId» в таблицу билетов и «InventoryItems» в таблицу TicketInventory

Поскольку TicketInventory может быть массивом или другим объектом! Если это массив, то он может содержать от 1 до 8 элементов внутри него, и объект будет одним элементом!

Теперь мне нужно добавить данные в соответствующую таблицу, как выполнить массовое создание и как выполнить создание ассоциации

А теперь код для создания :

 const add_ticket = await db.Ticket.create({ 
              userId,
              ........
              .........
              ........
              ticketinventories: {
              fare,
              serviceTax
             }},
             {
              include: [{
                association: db.TicketInventory,
               
              }]
            }

----------


I dont know where is the mistake, pls help !

 
 

Комментарии:

1. Пожалуйста, ознакомьтесь с документацией Model.bulkCreate

2. Я проверил, как это сделать для ассоциации?