how sequelize save items only after all models update

276 views Asked by At

In my models I have One-To-Many relationships Team.hasMany(Player); Player.belongsTo(Team);

const MyTeam = await Team.findOne({
  where: {
    name: "chikago"
  },
  include: Playes
});

result in json like this

MyTeam": {
    "id" : 5,
    "name" : "chikago",
    "title"  : "lets'go Chikago!!!"

    "Players": [
        {
            "id": 1,
            "name": "bob"
            "years": 18
        },
        {
            "id": 2,
            "name": "tom"
            "years": 20
        },
    ]
};

so in MyTeam I have result with team and players related to it. now i want to edit some values in MyTeam entity and in players, and create new player, then save all this with try...catch handling error;

for exapmle:

MyTeam.title = "here are we go";
try {
    await MyTeam.save();
} catch (error) {
    console.log(error);
}
let newPlayer = new Player({...});
try {
    await newPlayer.save();
} catch (error) {
    console.log(error);
};

// here many other code ...


try {
    MyTeam.Players.map(async player => {
        player.years = player.years + 1;
        await player.save();
    });
} catch (error) {
    console.log(error);
}

but there is a way if i need to save all my editing some like

let entityManager = new Sequeilize('entityManager');
MyTeam.title = "here are we go";
entityManager.add(MyTeam);

let newPlayer = new Player({...});
entityManager.add(newPlayer);

MyTeam.Players.map(player => {
    player.years = player.years + 1;
    entityManager.add(player);
});

try {
    await entityManager.save();
} catch (error) {
    console.log(error);
};

I an trying to do something like this, as described in https://github.com/sequelize/sequelize/issues/5471#issuecomment-216373780 but model saving and updated as they push to array

let savingEntities = [];
MyTeam.title = "here are we go";
savingEntities.push(MyTeam);

let newPlayer = new Player({...});
savingEntities.push(newPlayer);

MyTeam.Players.map(player => {
    player.years = player.years + 1;
    savingEntities.push(player);
});

try {
    await Promise.all(savingEntities);
} catch (error) {
    console.log(error);
};
0

There are 0 answers