postgresqlsequelize.jssequelize-cli

How to update a record and update include many records relationship by foreignKey in sequelize use db postgres


I create an API that updates a record associated with a foreign key

  1. if I just put a value to items so I want it to return remove other values that I don't put

  2. if I edit some value in items so I want it to return the value that I edited

  3. if I put value over value of items so I want it to return the old value of items and the value that I put over

example: const record = {id:1,name:"abc",items:[{id:1,name:"abc",recordId:1},{id:2,name:"abcd",recordId:1}]}
const update = await dbRecord.update({id,name},{where: {id: req.params.id},include:[model:'items',id:[1,2]});

Solution

  • const update = await dbRecord.update(
      { id, name },
      { where: { id: req.params.id } }
    );
    //array get from body
    ex: array = [
      { id: 1, name: "abc", recordId: 1 },
      { id: 2, name: "abcd", recordId: 1 },
    ];
    const itemId = array.map((arr) => arr.id);
    // result = [1,2]
    
    await dbItems.bulkCreate(array, {
      updateOnDuplicate: ["name"],
    });
    
    for (var i = 0; i < update.items.length; i++) {
      const item = update.items[i];
      if (!itemId.includes(container.id)) {
        await container.destroy();
      }
    }
    

    so it create update delete in once time.