axios 为什么我在从我的backened in nodejs中获取数据时会出现错误?

o3imoua4  于 2023-03-23  发布在  iOS
关注(0)|答案(2)|浏览(162)

前置代码-

useEffect(() => {
        const data = {userId: item.userId};
        const fetchDetails = async (data) => {
            try {
                const res = await axios.get('http://localhost:5000/user/getNameAvatar',data);
                console.log(res);
            } catch (error) {
                console.log(error);
            }
        };
        fetchDetails(data);
    }, []);

后台编码-

export const getUserNameAvatar = async(req,res) => {
    try {
        const {userId} = req.body;
        console.log(userId);
        const user = await User.findById(userId);
        return res.status(200).json({userName:user.userName,avatarUrl:user.avatarUrl});
    } catch (error) {
        return res.status(500).json({message: 'some internal error'});
    }
};

错误:-当我在backened中安慰userId时,它显示undefined
我也试过使用params添加数据,但也显示错误。

8wtpewkr

8wtpewkr1#

Axios不会将body附加到GET请求中。实际上,您将数据传递给config对象,并且不会将其发送到服务器。相反,您可以在前端将userId作为查询参数传递:

const res = await axios.get(`http://localhost:5000/user/getNameAvatar?userId=${userId}`);

然后从后端开始:

export const getUserNameAvatar = async(req,res) => {
    try {
        const userId = req.query.userId; // Here
        console.log(userId);
        const user = await User.findById(userId);
        return res.status(200).json({userName:user.userName,avatarUrl:user.avatarUrl});
    } catch (error) {
        return res.status(500).json({message: 'some internal error'});
    }
};
pengsaosao

pengsaosao2#

你应该在后端使用某种类型的body解析器。refer this image。虽然我直接在loginRoute上使用了它,但你可以直接在主文件中挂载它。例如:app.use(jsonParser)

相关问题