Multiple Post не работает, но один пост работает, с реагировать и express - PullRequest
0 голосов
/ 29 апреля 2020

Я пытаюсь сделать два пост-запроса с ax ios на мой express сервер с React.useEffect ().

Когда я вызываю только firstAx ios () или secondAx ios ( ) внутри моего useEffe c () сообщение извлекает хороший результат. но когда я вызываю getBoth () внутри моего useEffect (), как показано ниже, chrom выдаст мне следующую ошибку: POST http://localhost:3000/filterUsers net::ERR_EMPTY_RESPONSE только эта ошибка связанный с secondAx ios (). Я не понимаю, почему, и на моей серверной стороне я также объявил cors:

app.use(cors({ origin : 'http://localhost:8081', methods : ['GET', 'POST'], credentials:true }));

код ответа внешнего интерфейса выглядит так:

useEffect(()=>{
      getBoth().then((res)=>console.log(res))
}, [])

async function postBoth(){
  let promises = [firstAxios(), secondAxios()]
  let [ff, sf] = await Promise.all(promises)
  return {ff, sf}
}

async function firstAxios(){
  const authOption = {
  method : 'POST',
  url : 'http://localhost:3000/session',
  header: {'content-type':'application/json'},
  data : {data : 'some'},
  withCredentials : true,
  }
  let res = await Axios(authOption)
  return (res.data)
}

async function secondAxios(){
  var authOption = {
  method : 'POST',
  url : 'http://localhost:5000/filterUsers',
  header: {'content-type':'application/json'},
  data : {id : 1},
  withCredentials : true,
  }
  let res = await Axios(authOption)
  let users = res.data
  return users
}

На Express стороне сервера соответствующий код:

const fetchUserFromId = async (userId)=>{
    try{
        let query = `SELECT * from users WHERE id =${userId}`
        let res = await pool.query(query)
        if(res[0])
            return res[0]
        console.error('the user does not exist from fetchUserFromId')
    }catch(e){
        return('Error in fetchUserFromId' + e)
    }
}

router.post('/session', (req, res)=>{
    res.send({data : 'ok from server'})
})

router.post('/filterUsers', async(req, res)=>{
    let id = req.body.id
    let user = await fetchUserFromId(id)
    res.send(user)
})

дальнейшее тестирование Если при таком изменении маршрутизатора все работает нормально, я могу получить правильные два ответа: оба запроса на моей передней стороне React.

router.post('/filterUsers', async(req, res)=>{
    res.send({user : 'test'})
})

Так что, мне кажется, проблема, связанная с моим запросом к базе данных в express, занимает слишком много времени? но почему, если я посылаю отдельный запрос на топор ios, все работает нормально?

...