繁体   English   中英

如何通过 id 获取用户并通过 get 请求使用 React Native 来表达?

[英]how to get a user by id with a get request to express using react native?

我正在尝试使用 express 和 axios 在本机反应中呈现个人资料页面的一个用户信息。

这是负责获取用户的 controller。

```// GET ONE USER BY ID
module.exports.findOneSingleUser = (req, res) => {
User.findOne({ _id: req.params.id })
    .then(oneSingleUser => res.json({ user: oneSingleUser }))
    .catch(err => res.json({ message: 'Something went wrong', error: err }));
}```

这是我用来向服务器发出 axios 请求的代码,我能够获取数据库中的所有用户,但我希望能够通过 id 或存储用于登录和登录的令牌呈现一个用户坚持这是有效的。

```
const ProfileInfo = (props) => {
const { navigation, route } = props
const authCtx = useContext(AuthContext);
const token= authCtx.token

const [userInfo, setUserInfo] = useState([]);


useEffect(() => {
    axios.get(`http://localhost:3000/api/users/`)
        .then(res => console.log(res.data))
        .catch(err => console.log(err))
}, [])```

这是从后端获取令牌的 util 文件夹中的代码

import { useNavigation } from '@react-navigation/native';
const BASE_URL = 'http://localhost:3000'


    // ! LOGIN FUNCTION
    export async function authenticate(email,password ){
    const token = await axios.post(BASE_URL + '/api/login',
    {
        email: email,
        password: password,
    },{ withCredentials: true }
    );
    return token;
    }
    // ! REGISTER NEW USER FUNCTION
    export async function createUser(email, password) {
    const token = await axios.post(BASE_URL + '/api/register',
        {
            email: email,
            password: password,
        },{ withCredentials: true }
    );
    return token;

    }```


this is the screen where I have the profile info componet being used

    ```import React,{useEffect} from 'react'
    import ProfileInfo from '../components/Profile/ProfileInfo';
    import Statistics from '../components/Profile/Statistics';


    const ProfileScreen = (props) => {
    const {navigation} = props
    
    
    return (
        <>
            <ProfileInfo navigation={navigation}/>
            <Statistics />
        </>
    )
    }

    export default ProfileScreen```

    

How do or What do I need to pass into the url of the axios request to get the data for the user that is logged in?  thanks in advance.

when I change the server side to
    User.findOne({ token: req.params.token})

      &

    ``` useEffect(() => {
        axios.get(`http://localhost:3000/api/users/${token}`)
            .then(res => console.log(res.data))
            .catch(err => console.log(err))
    }, [])```


I get a user but it is only the first user in DB not the user that is logged in... not sure how to get the one user that is logged in.

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2023 STACKOOM.COM