当前位置: 首页 > 知识库问答 >
问题:

Express Server-不能POST但可以GET,mongoDB问题还是后端服务器问题?

庾和昶
2023-03-14

我最近部署了我的第一个项目,一个MERN堆栈到Heroku。然而,在部署之后,我遇到了开发中没有的问题。对我的web功能的一个简单解释是,它从mongoDB获取数据,并允许用户添加多个过滤器来搜索它们。它还具有允许您创建新数据和编辑旧数据的功能。我遇到的问题是,所有带有POST的函数都不能工作,它们会激发,但它会在Network dev工具中的XMLHttpRequest.p.onError(xhr.js:84)中出现错误“net::err_connection_referend”和“editinfo.jsx:58 error:Network error at e.exports(createerror.js:16)”。然而GET工作得很好,这意味着我动态生成的表可以工作,但我不能生成新的数据或编辑以前的数据(作为附带说明,我不能生成用于编辑的数据,尽管我能够为以前提到的表生成相同的数据。我认为这是因为我要求通过post获取数据,并且通过GET获取表)。我认为问题不是MongoDB的,因为GET正在工作,所以我猜测我需要做一些配置以允许post到我的服务器。我将贴出一些函数的工作和一些不。任何帮助或领导将非常感谢,谢谢。

这里有一个工作的:客户端

useEffect(() => {
    fetch("/data").then(res => {
        if(res.ok) {
            return res.json();
        } else {
          console.error("Cannot asscess data")
        }
    })
    .then(jsonRes => setData(jsonRes))
    setError(0)
    setShowError(false)
    // eslint-disable-next-line react-hooks/exhaustive-deps
},[resetData])

这是服务器

router.route("/data").get((req,res) => {

    Disease.find({}, async(err, foundDisease) => {
        if(err) {
            console.error(err)
        } else {
        foundDisease.sort(function(a, b){
            var nameA=a.diseaseName.toLowerCase(), nameB=b.diseaseName.toLowerCase();
            if (nameA < nameB) //sort string ascending
             return -1;
            if (nameA > nameB)
             return 1;
            return 0;
           });
           res.json(foundDisease);}
})
})

这里有一个不起作用:

这里是客户端(我使用post获取数据,因为我需要发送我需要的信息的id)

useEffect(() => {
        const idInfo = {id};
        axios.post('http://localhost:3001/info', idInfo)
            .then(function(res){
                setInput({
                diseaseName: res.data[0].diseaseName, 
                species: res.data[0].species,
                vector: res.data[0].vector,
                vectorName: res.data[0].vectorName,
                agent: res.data[0].agent,
                agentName: res.data[0].agentName,
                symptoms: res.data[0].symptoms,
                diagnosis: res.data[0].diagnosis,
                treatment: res.data[0].treatment,
                prognosis: res.data[0].prognosis,
                notes: res.data[0].notes
                
                })
                res=null
                
            })
            
             .catch(err => console.error(err))
            // eslint-disable-next-line react-hooks/exhaustive-deps
    }, [])

这是服务器

router.route("/info").post((req, res) => {
    console.log(req.body)
    const idInfo = req.body.id;
    console.log(idInfo);
    current_id = idInfo;

    Disease.find({_id: current_id})
        .then(foundId => res.json(foundId))
        .catch(err => console.error(err));
        
})

共有1个答案

殷轶
2023-03-14

axios.post('localhost:3001/info',idInfo)

您将发布到localhost,而不是实际部署的服务器。您应该将它更改为一个环境变量,或者只是将您的heroku地址放在那里

 类似资料:
  • 不久前,我使用类实现了一些代码来使用REST Api。 这段代码似乎在测试和生产环境(每个环境访问一个测试/生产 URI)下都非常有效。最近,我们开始仅在生产环境中获得 HttpRequestException: 这似乎有点奇怪,所以我用Postman发送相同的消息,它工作得很好。我不确定为什么我们的代码失败了,而邮递员却在工作。我更改了json数据中的一个参数(状态从“NY”变为“NV”)和我们

  • 我对龙目岛或月食有问题,不确定是哪一个。我有一个Spring Boot maven项目,我正在使用Lombok。我在pom中添加了这个。xml文件,我使用了用于eclipse的lombok安装。 发生的事情是,我可以对项目进行和以及maven更新,一切都按预期构建。一旦我去运行项目,错误就开始出现,我得到错误,例如: 在运行项目时,有什么事情可以让龙目岛脱颖而出吗?! 我正在运行Eclipse O

  • 我最近对尝试将我的石头-纸-剪刀游戏改编成一个多人友好的程序感兴趣,所以今天我决定查阅一个关于服务器的教程。似乎我正在精确地跟踪它(除了使用不同的IDE之外)。然而,有些地方出了问题,我不确定到底是什么,它对教程制造商来说很好。我查过EOFException,但并没有帮到我。 Youtube上的教程 [关于EOFException的文档](我在这里有一个链接,但我需要至少10个声誉才能发布两个以上

  • 本文向大家介绍服务器迁移php版本不同可能诱发的问题,包括了服务器迁移php版本不同可能诱发的问题的使用技巧和注意事项,需要的朋友参考一下 今天在服务器做了迁移以后,前台可以正常显示和调用,登陆后台显示500错误,一般这种情况下都要查看核心跳转文件,经查看发现login.php文件并没有调用.因为找不到login.php文件,那就证明这个文件里是有语法错误。 打开服务器报错信息发现.Fatal e

  • 目前打算使用 nginx 在云服务器上放置一个下载服务,假如服务器的出口带宽是 3Mbps,如果同时有 10 个人下载文件, nginx 会平均分配带宽,还是根据用户的网络情况来分配带宽,还是基于其他算法来分配带宽。或者是说分配带宽的行为不受 nginx 控制,而是受网卡等设备的控制?

  • 在使用 nuxt 时,nuxt 可以使用 usefetch 进行请求,底层的实现是 ofetch 这个库,这个库支持在服务器端和客户端进行请求,nuxt 做了优化,如果服务器端有请求过的数据会序列化传输到客户端,这样客户端在水合时就不用再发起请求。而在使用 nextjs 时,使用的是 fetch 进行请求,nextjs 对 fetch 进行了扩展,增加了缓存的功能,但是我发现这个扩展的 fetch