我希望我在标题中的问题是可以理解的。几天前我也在寻找解决方案,但找不到任何有效的方法。也许我不明白我不知道.任何帮助将不胜感激。谢谢
我已经成功地从后端的MongoDB中通过ID检索了一个用户,端点上没有参数。在Postman上通过在正文上写一个示例id进行测试。以前,我只通过参数检索user,从来没有把id放在body上。
这是端点(我问过我的导师,他说因为是NoSQL,所以我们不需要参数)。
router.get('/getUser', getSingle)
在服务上使用此代码:
export const getSingleUser = async (id: string) => {
const userList = await getCollection('users')
const userData = await userList?.findOne({
_id: new ObjectId(id)
})
console.log('user', userData)
return userData
}
现在我想连接前端。我试着getAllUsers和它的工作与这些代码.
export const getAllUsers = async (): Promise<IResponse | IErrorResponse> => {
const axiosClient = AxiosClient.createInstance();
try {
const response = await axiosClient.get("/api/v1/getAll");
return {
success: true,
data: response.data
};
} catch (err) {
console.error(err);
return {
success: false,
data: isAxiosError(err) ? err.message : (err as string)
};
}
};
ReactJS部分
const [users, setUsers] = useState<userData[]>([]);
useEffect(() => {
// open browser console to see result
const getUsers = async () => {
const response = await getAllUsers();
// const result = response.json();
if (response.success) {
setUsers(response.data as userData[]);
console.log(response.data);
} else {
throw Error("Cannot fetch"); // temporary
// create error notification wth Chakra
}
};
getUsers()
}, []);
但我真的找不到一种方法来检索一个单一的用户使用id。**我不知道在端点之后的选项上放什么来定义要搜索的ID?**已经尝试了字符串,对象接口内部的id,它们不起作用。这是最新的审判。
export const getSingleUser = async(**id: string**): Promise<IResponse | IErrorResponse> =>{
const axiosClient = AxiosClient.createInstance();
try {
const response = await axiosClient.get("api/v1/getUser/", **{params: {ID: id}}**);
return {
success: true,
data: response.data
}
} catch (err) {
console.error(err);
return {
success: false,
data: isAxiosError(err) ? err.message: (err as string)
}
}
}
**这里可以输入什么参数?**我很沮丧,我只是把一个ID从数据库。不起作用。什么都没发生控制台为空。
useEffect(() => {
// open browser console to see result
const getUser = async (**id: string**) => {
const response = await getSingleUser(**'64e738b63ef7a62f2d9a3d60'**);
if (response.success) {
setSingleUser(response.data as userData[]);
console.log(response.data);
} else {
throw Error("Cannot fetch"); // temporary
// create error notification wth Chakra
}
}
getUser(**id**)
}, []);
那么,我可以在axios get函数的端点之后的选项和useeffect的参数中放置什么呢?再次感谢
1条答案
按热度按时间yqhsw0fo1#
在你的后端,你可以从请求路径中读取id:
在控制器
getSingle
中,您可以从请求路径访问用户id:在前端将请求路径更改为: