从 node.js 发送结果以做出反应

Posted

技术标签:

【中文标题】从 node.js 发送结果以做出反应【英文标题】:sending results from node.js to react 【发布时间】:2021-10-24 16:02:42 【问题描述】:

所以在我的 listPage 上,我有 2 个文档,我希望能够在其中单击 edit 按钮,然后它会将我带到 editPage。它现在确实这样做了。但我所做的是通过axios.post 发出请求,以便将文档的id 发送到后端,然后将结果发送到前端,它只会显示一个根据它的id 记录文件。这是我所拥有的:

列表页:

 const editById = (id) => 
console.log(id);
axios
  .post(`/getDocToEdit`,  id: id )
  .then(() => 
    console.log(id, " worked");
    window.location = "/admin/services/:site";
  )
  .catch((error) => 
    // Handle the errors here
    console.log(error);
  );

;

然后它到达这个后端路由:

    app.post('/getDocToEdit', (req, res) => 

    var id = req.body.id;
    ServicesModel.findOne(_id: id, function(err,result)  
        console.log(result); 
        res.status(200).send(result)
    );
)

然后我只是想在我的editPage 的屏幕上显示文档,但它不会加载我通过res.status(200).send(result) 发送的结果。我只有一张应该显示记录的表格。我应该再次从前端打一个电话吗?

【问题讨论】:

【参考方案1】:

您应该将发布结果保存在您的前端:


const editById = (id) => 
console.log(id);
axios
  .post(`/getDocToEdit`,  id: id )
  .then((RESPONSE) => 
    console.log(RESPONSE); // do it and if you have the response, everything 
    is fine and you can use it as the returned data
    console.log(id, " worked");
    window.location = "/admin/services/:site";
  )
  .catch((error) => 
    // Handle the errors here
    console.log(error);
  );

【讨论】:

你在哪里有它?它在 .then((RESPONSE ? 是的,当您在后端使用res.status(200).send(result) 时,您应该在前端获取result 以进行进一步处理。您可以使用await.then(response) 进行操作。如果您还有其他问题,请告诉我。 所以我在我的列表服务页面上将 axios 发布到后端,然后我试图从中获取响应,并在编辑服务页面中使用它。所以这样做不会让我在编辑页面中得到结果 要解决这种情况,您有两种选择:1. 使用状态管理,例如 redux 或上下文提供程序,或者 2. 将响应存储在一个变量中并将其传递给所需的组件。 查看这些链接react-redux.js.org/introduction/…。和reactjs.org/docs/context.html 但我建议在另一个问题中提出这个问题,因为它与您在这里的问题完全不同。

以上是关于从 node.js 发送结果以做出反应的主要内容,如果未能解决你的问题,请参考以下文章

什么 TypeScript 配置产生最接近 Node.js 14 功能的输出?

无法在 Apolloclient 中发送 authToken 以做出反应

Node.js log4j-like 日志系统

反应 js:axios 向 node.js api 发布请求

Node.js - 如何从 html 发送数据以表达

如何使用 node.js MySQL 从 MySql DB 获取结果并将它们发送回 API.ai - DialogFlow