Выполнение> 10 запросов, по крайней мере, одновременно, этот код вставляет 4 одинаковые записи, но должен вставить только 1.
Пользователь может запустить только 1 активную игру. (в активном игровом поле finished = false
)
console.log('performing request');
const activeGame = await db.Game.findOne({ uid, finished: false });
if (activeGame !== null) {
console.log('errored');
return { error: 'Finish previous game.' };
} else {
console.log('inserted');
const game = new db.Game({
uid,
moves: new Array(5*5).fill(0)
});
game.save();
return game;
}
Журналы при 10 запросах одновременно:
performing request
inserted
performing request
performing request
inserted
performing request
inserted
inserted
performing request
errored
performing request
errored
performing request
errored
performing request
errored
performing request
performing request
errored
errored
PS Транзакции мне не помогают