【问题标题】:multiple async-await get requests not working in PERN stack app多个异步等待获取请求在 PRN 堆栈应用程序中不起作用
【发布时间】:2021-04-30 11:42:17
【问题描述】:

我正在使用 PRN 堆栈构建一个库存管理应用程序。我有一个模式,我需要发出 2 个 GET 请求,当我在前端 console.log 时,两个请求都得到状态 200 响应。但是在我的快速服务器中,第一个获取请求工作正常,但第二个请求没有收到任何内容。

我的前端代码

const openModal = async () => {
        setDetailModalOpen(true)
        try {
            await Promise.all([
                (async () => {
                    const serial_number = props.bacsSerial
                    const response = await fetch(`http://localhost:5000/bacslist/demoinventory/${serial_number}`)
                    const parseResponse = await response.json()
                    console.log(response)
                    setInputs({
                        bacsUnit: parseResponse.bacs_unit,
                        serialNumber: parseResponse.serial_number,
                        partNumber: parseResponse.part_number,
                        bacsLocation: parseResponse.bacs_location,
                        description: parseResponse.bacs_description
                    })
                    setBacsId(parseResponse.id)
                    setBacsData(parseResponse)
                })(),
                (async () => {
                    const response2 = await fetch(`http://localhost:5000/bacslist/demoinventory/${bacsId}`)
                    console.log(response2)
                })()
            ])
        } catch (err) {
            console.error(err.message)
        }
    }

我的后端代码

router.get("/demoinventory/:serial_number", async (req, res) => {
    console.log('This one is working')
    try {
        const {serial_number} = req.params
        const getDemoBacs = await pool.query(
            "SELECT * FROM demo_inventory WHERE serial_number = $1", [serial_number]
        )
        
        res.json(getDemoBacs.rows[0])
    } catch (err) {
        console.error(err.message)
    }
})

router.get("/demoinventory/:bacsId", async (req, res) => {
    console.log(req.params)
    console.log('This one is not working')
    try {
        const getHistoryData = await pool.query(
            "SELECT * FROM demo_inventory_history"
        )
        console.log(getHistoryData)
        res.json(getHistoryData)
    } catch (err) {
        console.error(err.message)
    }
})

【问题讨论】:

    标签: node.js reactjs express async-await fetch


    【解决方案1】:

    对不起,对这些东西有点陌生,所以这不是一个完全正确的答案,但我不允许发表评论。我用您发布的代码看不到您的状态变量,但是您确定BacsId 在第二次调用之前被设置为状态,还是第二次调用中的参数被发送为空,因此不是使用正确的网址?只是一个想法。

    【讨论】:

    • 是的。正在设置 bacsId 状态,我可以 console.log 它。现在我发现如果我使用一个完全不同的 URL,它甚至不存在,它仍然返回 200...
    • 我修好了。我的第二个请求 URL 有问题。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-03-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-05
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多