В моих моделях у меня отношения «один ко многим» Team.hasMany(Player);
Player.belongsTo(Team);
const MyTeam = await Team.findOne({
where: {
name: "chikago"
},
include: Playes
});
результат в json, как это
MyTeam": {
"id" : 5,
"name" : "chikago",
"title" : "lets'go Chikago!!!"
"Players": [
{
"id": 1,
"name": "bob"
"years": 18
},
{
"id": 2,
"name": "tom"
"years": 20
},
]
};
, поэтому в MyTeam у меня есть результат с командой и игроками, связанными с этим. Теперь я хочу отредактировать некоторые значения в сущности MyTeam и в игроках и создать нового игрока, а затем сохранить все это с try...catch
ошибкой обработки;
для примера:
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);
}
но есть способ, если мне нужно сохранить все мои изменения, например
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);
};
Я пытаюсь сделать что-то подобное, как описано в https://github.com/sequelize/sequelize/issues/5471#issuecomment -216373780 но модели сохраняются и обновляются, так как они sh в массив
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);
};