skip to Main Content

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]});

2

Answers


  1. Chosen as BEST ANSWER
    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.


  2. You can use Sequelize mixins. Sequelize has special methods that uses the prefix get add set concatenated with the model name.

    Login or Signup to reply.
Please signup or login to give your own answer.
Back To Top
Search