我刚刚发现当几乎同时触发 2 个请求时,我的 API 正在做一些奇怪的事情。
我发现问题是我在下面的“用户”变量之前缺少“var”声明,但我真的很好奇导致下面描述的错误的根本问题:
我有两个 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 解决了这个问题,但我对后台实际发生的事情感到非常惊讶。
你有什么主意吗?
守候你守候我
相关分类