Performing >10 requests, at least, at the same time, this code inserting 4 same records, but must insert only 1.
User could start only 1 active game. (in active game field 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;
}
Logs while 10 request at the same time:
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
Transactions don't help me.