Я только что обнаружил, что мой API делает странные вещи, когда 2 запроса запускаются почти одновременно.
Я понял, что проблема заключалась в том, что у меня отсутствовало объявление «var» перед моим «пользователем» "переменная ниже, но мне действительно интересно узнать о проблеме root, которая вызвала ошибку, описанную ниже:
У меня есть две конечные точки API, которые вызывают ту же функцию, как показано ниже:
router.get('/refresh_session_token', function (req, res) {
let user_id = req.body.user_id // The value sent is 8
findUserWithId(user_id)
.then(user_data => {
user = user_data // I forgot 'var' here
})
.then(() => {
console.log(user) // This should always show user data from user_id = 8
})
}
router.get('/resend_invite', function (req, res) {
let user_id = req.body.user_id // The value sent is 18
findUserWithId(user_id)
.then(user_data => {
user = user_data // I forgot 'var' here
})
.then(() => {
console.log(user) // This should always show user data from user_id = 18
})
}
const findUserWithId = (id) => {
return knex.raw(`SELECT * FROM users WHERE id = ?`, [id]).then((data) => data.rows[0])
}
Весь этот код находится в том же файле, который я экспортирую через module.exports = router;
Я обнаружил, что если я активирую конечные точки / refresh_session_token и / Resend_invite почти в одно и то же время каждый с двумя разными user_id, иногда мой console.log возвращает тот же результат для обоих, как если бы я использовал один и тот же user_id.
Добавление var к пользователю устранило проблему но я очень удивлен тем, что на самом деле происходит на заднем плане.
Есть идеи?