Как сделать 2 разных GET запроса, если они принимают одинаковые значения?

Рейтинг: 0Ответов: 1Опубликовано: 29.04.2023

У меня возникла одновременно глупая и непростая проблема. Мне нужно на одной странице сделать 2 разных GET запроса, которые принимают ID заказа. Проблема заключается в том, что при попадании запроса в роутер, первый по списку запрос выполняется 2 раза, однако мне нужно, чтобы при вызове второго запроса срабатывал соответственно другой (второй) запрос.

Ниже прилагаю код:

//OrderPage.js

useEffect(() =>{
    getOneOrder(id.id).then(data => order.setOneOrder(data)).finally(setTimeout(stop, 1000))
    getOneOrderInfo(id.id).then(data => order.setOneOrder(data)).finally(setTimeout(stop, 1000))
  }, [])


------------

//orderAPI.js

export const getOneOrder = async (id) => {
    const {data} = await $authHost.get('api/order/' + id)
    return data
}

export const getOneOrderInfo = async (id) => {
    const {data} = await $authHost.get('api/order/' + id)
    return data
}

----------

//orderRouter.js

router.get('/:id', orderController.getOne)
router.get('/:id', orderController.getOneInfo)

------------

//orderController.js

async getOne (req, res, next){
        try{
            const {id} = req.params

            const order = await Order.findOne({where: {id : id}})

            return res.json(order)
        } catch (e){
            next(ApiError.badRequest(e.message))
        }
    }

    async getOneInfo (req, res, next){
        try{
            const {id} = req.params

            const orderInfo = await OrderDish.findAll({include: {
                model: Dish
            }, where: {orderId: id}})

            return res(orderInfo)
        } catch (e){
            next(ApiError.badRequest(e.message))
        }
    }

Ответы

▲ 0Принят

Спасибо @nörbörnën за наводку. Вот мой код, решивший проблемку:

//OrderPage.js

useEffect(() =>{
    getOneOrderInfo(id.id).then(oneOrder => {
      order.setOneOrder(oneOrder.order);
      order.setDishes(oneOrder.orderInfo);
    }).finally(setTimeout(stop, 1000))
  }, [])

----------
//orderAPI.js

export const getOneOrderInfo = async (id) => {
    const {data} = await $authHost.get('api/order/' + id)
    return data

-----------
//orderRouter.js

router.get('/:id', orderController.getOneInfo)

-----------
//orderController.js

async getOneInfo (req, res, next){
        try{
            const {id} = req.params

            const [order, orderInfo] = await Promise.all([
                Order.findOne({where: {id : id}}),
                OrderDish.findAll({
                   include: { model: Dish },
                   where: {orderId: id},
                })
              ]);
           
              return res.json({ order, orderInfo });
        } catch (e){
            next(ApiError.badRequest(e.message))
        }
    }