Javascript axios.post未从服务器返回数据:“0”;无法分解属性';数据';属于';(中间值)和#x27;因为它是未定义的;
我正在尝试通过axios.post()从服务器获取数据 决定使用POST而不是GET,因为我想发送一个带有ID的数组以在数据库中查找,该数组可能太大,无法放入GET查询参数 我设法在帖子正文中发送了一个带有ID的数组。这到达了我的服务器。我可以成功地在数据库中找到项目。然后在响应中返回这些项。数据显示在Chrome开发工具>网络(状态200)中。当我使用邮递员手动发送请求时,我也会得到正确的东西 一切似乎都很正常,但响应没有到达axios函数中的我的数据变量中 我花了一天时间在这里尝试所有类似答案的解决方案。什么都没用 我还尝试在查询参数中获取并发送ID,这会产生相同的错误。我怀疑我在使用async/Wait时出错,因为我得到了这个“中间值”东西 提前谢谢你的帮助 客户端axios功能 客户操作 服务器控制器 服务器路由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函数中的我的数据变量中 我花了一天时间在这里尝试所有类似答
这里有一些额外的花括号(或者缺少一个
返回值
,具体取决于您如何看待它)。使用带有花括号的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(...);