Javascript axios.post未从服务器返回数据:“0”;无法分解属性';数据';属于';(中间值)和#x27;因为它是未定义的;

Javascript axios.post未从服务器返回数据:“0”;无法分解属性';数据';属于';(中间值)和#x27;因为它是未定义的;,javascript,reactjs,express,get,axios,Javascript,Reactjs,Express,Get,Axios,我正在尝试通过axios.post()从服务器获取数据 决定使用POST而不是GET,因为我想发送一个带有ID的数组以在数据库中查找,该数组可能太大,无法放入GET查询参数 我设法在帖子正文中发送了一个带有ID的数组。这到达了我的服务器。我可以成功地在数据库中找到项目。然后在响应中返回这些项。数据显示在Chrome开发工具>网络(状态200)中。当我使用邮递员手动发送请求时,我也会得到正确的东西 一切似乎都很正常,但响应没有到达axios函数中的我的数据变量中 我花了一天时间在这里尝试所有类似答

我正在尝试通过axios.post()从服务器获取数据

决定使用POST而不是GET,因为我想发送一个带有ID的数组以在数据库中查找,该数组可能太大,无法放入GET查询参数

我设法在帖子正文中发送了一个带有ID的数组。这到达了我的服务器。我可以成功地在数据库中找到项目。然后在响应中返回这些项。数据显示在Chrome开发工具>网络(状态200)中。当我使用邮递员手动发送请求时,我也会得到正确的东西

一切似乎都很正常,但响应没有到达axios函数中的我的数据变量中

我花了一天时间在这里尝试所有类似答案的解决方案。什么都没用

我还尝试在查询参数中获取并发送ID,这会产生相同的错误。我怀疑我在使用async/Wait时出错,因为我得到了这个“中间值”东西

提前谢谢你的帮助

客户端axios功能 客户操作 服务器控制器 服务器路由
这里有一些额外的花括号(或者缺少一个
返回值
,具体取决于您如何看待它)。使用带有花括号的lambda(arrow函数)时,必须显式返回值,否则它将返回未定义的值。从以下位置更改代码:

export const getStuff = Ids => {
  axios.post(...);
};
其中一项:

// Option 1
export const getStuff = Ids => {
  return axios.post(...);
};

// Option 2
export const getStuff = Ids => axios.post(...);

任何一种格式都将返回实际的axios承诺,而不是默认的未定义值。

axios中的响应应为实际值,因此除非响应中有数据字段,否则直接使用它即可。Lifesaver!我知道事情会很简单。事后看来,错误消息也有道理。谢谢
export const getStuff = async (req, res) => {
  try {
    const { Ids } = req.body;
    const stuff = await STUFF.find().where('_id').in(Ids);
    console.log('SERVER', stuff);
    // this works until here. request comes through and
    // I can successfully find the stuff I want in the database
    res.status(200).json(stuff); // this also works, response is being sent
  } catch (error) {
    res.status(404).json({ message: error });
  }
};

router.post('/cart/stuff', getStuff);

export const getStuff = Ids => {
  axios.post(...);
};
// Option 1
export const getStuff = Ids => {
  return axios.post(...);
};

// Option 2
export const getStuff = Ids => axios.post(...);