如何将变量发送到后端 - Mern Stack

How to send a variable to Backend - Mern Stack

我正在尝试根据查询从 Mongo 数据库中获取一些记录。我完成了后端,它与 Postman 配合得很好,但我不知道如何将查询变量从 React 前端发送到后端。

有一个客户端模型 class,我想检索具有特定公司 ID 的所有客户端,我将在单击按钮时从前端发送这些 ID。

Controller.js

exports.viewSpecificClients = async(req,res)=>{
  const id = req.query.id;
  console.log(id);
    try{
      const clients = await Client.find({clientCompanyName: id});
      res.json({clients});
    }catch(err){
      console.log(err, 'clientsController.viewSpecificClients error');
      res.status(500).json({
        errorMessage: 'Please try again later'
      })
    }
};

路线

router.get('/', clientsController.viewSpecificClients);

我必须使用 Redux,所以我尝试这样做但我只能设法显示数据库中的所有客户端(我不知道如何发送变量)。

Action.js 在 Redux

export const getClients = () => async dispatch =>{
    try{
        const response = await axios.get('clients');
        dispatch({
            type: GET_CLIENTS,
            payload: response.data.clients
        });
    }catch(err){
        console.log('getClients api error:', err);
    }
}

你能帮我看看如何使用 redux 从前端发送公司 ID - 也就是说我需要帮助来了解如何更改操作功能以及我必须在 main.js 单击按钮时的文件 ?

你有两个选择。首先,您将参数值作为查询字符串传递。另一种选择是将您的获取请求修改为 POST 请求,您可以在其中添加请求正文。如果您尝试像对象一样传递更多值,post 请求会更好。

如果你在前端有权限获取companyId,你只需要

 const response = await axios.get(`clients?id=${companyId}`);

假设后端 express 已经配置了查询解析器。(默认)

也许你可以拥有

const getClients = (companyId) => dispatch => {
  const response = await axios.get(`clients?id=${companyId}`);
  // above code here
}

如果您需要进一步跟进,请告诉我。