Javascript 如何使用react将多个参数作为url中的对象传递

Javascript 如何使用react将多个参数作为url中的对象传递,javascript,html,node.js,reactjs,react-router,Javascript,Html,Node.js,Reactjs,React Router,我试图通过URL(从使用Axios的ReactJS)将多个参数传递给我的api(Koa),以将数据发布到我的数据库。这段代码正在运行,但我想知道是否有更简单的方法来传递数据,而不是键入要插入数据库的每个值 我正在向我的db添加建议时间,如下所示: 在JS文件中: axios.post(`/Advising/AddTime/${idValue}/${dayValue}/${startValue}/${endValue}/${timeValue}`) 我的膝关节炎(节点.js)文件: 最后,我的控

我试图通过URL(从使用Axios的ReactJS)将多个参数传递给我的api(Koa),以将数据发布到我的数据库。这段代码正在运行,但我想知道是否有更简单的方法来传递数据,而不是键入要插入数据库的每个值

我正在向我的db添加建议时间,如下所示:

在JS文件中:

axios.post(`/Advising/AddTime/${idValue}/${dayValue}/${startValue}/${endValue}/${timeValue}`)
<>我的膝关节炎(节点.js)文件:

最后,我的控制器:

class AdvisingController {
async addTimes(ctx) {
    return new Promise((resolve, reject) => {
    let query = "INSERT INTO AdvisingTimes (id, Day, StartTime, EndTime, TimeBlock) VALUES (?, ?, ?, ?, ?);";
    console.log('About to run this query.', query);
        dbConnection.query(
            {
                sql: query,
                values: [ctx.params.id, ctx.params.day, ctx.params.starttime, ctx.params.endtime, ctx.params.timeblock]
            }, (error) => {
                if (error) {
                    return reject(error);
                }
            }

        )
    }).catch(err => {
        ctx.body = {
            status: "Failed",
            error: err,
            user: null
        };
    });

}

我使用的有用功能:

const insertParams = (url, params) => { // url is string, params is object
  let paramUrl = url;
  const copyParams = Object.assign({}, params);

  Object.keys(copyParams).forEach(key => {
    const currentParam = copyParams[key];
    if (paramUrl.includes(key)) delete copyParams[key];
    paramUrl = paramUrl.replace(`:${key}`, currentParam);
  });
  return paramUrl;
};
对于您的情况,只需调用insertParams:

const url = 'http://your.url.com/';
const params = { id: 'id123', day: 'friday', starttime: new Date(), endtime: new Date(), timeblock: 'timeblock' };

const urlWithParams = insertParams(url, params);

我使用的有用功能:

const insertParams = (url, params) => { // url is string, params is object
  let paramUrl = url;
  const copyParams = Object.assign({}, params);

  Object.keys(copyParams).forEach(key => {
    const currentParam = copyParams[key];
    if (paramUrl.includes(key)) delete copyParams[key];
    paramUrl = paramUrl.replace(`:${key}`, currentParam);
  });
  return paramUrl;
};
对于您的情况,只需调用insertParams:

const url = 'http://your.url.com/';
const params = { id: 'id123', day: 'friday', starttime: new Date(), endtime: new Date(), timeblock: 'timeblock' };

const urlWithParams = insertParams(url, params);

如果您使用的是
POST
,则始终可以将数据作为有效负载的一部分发送

axios.post('/Advising/AddTime/', {
  id,
  day,
  starttime,
  endtime,
  timeblock
});
然后在后端,您可以通过
ctx.request.body


注意-如果您使用的是
POST
,则需要包含一个类似于的主体解析器,然后您可以始终将数据作为有效负载的一部分发送

axios.post('/Advising/AddTime/', {
  id,
  day,
  starttime,
  endtime,
  timeblock
});
然后在后端,您可以通过
ctx.request.body

注意-您需要包括一个主体解析器,如

签出标记的答案:签出标记的答案: