Данные mongodb обновлены, но axios загружает старые данные - PullRequest
0 голосов
/ 14 ноября 2018

Когда пользователь обновляет свой профиль в компоненте editProfile, данные обновляются на сервере, и пользователь перенаправляется в компонент userProfile.Теперь в userProfile пользовательские данные выбираются с сервера.Здесь я получаю старые данные.Но если я обновлю страницу, я получу обновленные данные.

// api

router.post('/:uid/edit', (req, res) => {
const updatedUser = {
    name : req.body.name,
    avatar : req.body.avatar,
    bio : req.body.bio
};
 console.log('updateduser',updatedUser);
 User.findOneAndUpdate({uid: req.params.uid}, {$set: updatedUser}, 
 {"new":true})
     .then(user => {
         res.json(user);
         console.log(user);
        })
     .catch(err => {
         console.log('er',err);
     });
});

// action

 export const usersFetchData = (url) => {
 return (dispatch) => {
    dispatch(userIsLoading(true));
    axios
        .get(url)
        .then(res => {
            if(!res){
                throw Error(res.statusText)
            }
            dispatch(userIsLoading(false));
            console.log(res.data); //getting old data 
            return res.data;    
        })
        .then(users => {
            console.log('users',users);
            dispatch(usersFetchDataSuccess(users))
        })
        .catch(() => dispatch(userHasErrored(true)));
}
}

1 Ответ

0 голосов
/ 14 ноября 2018

Скорее всего, это связано с axios кэшированием.Посмотрите, что у вас есть в настройках Axios и если установлено

'Cache-Control': 'no-cache' 

.Обычно через:

var config = {headers: {'Content-Type': 'application/json','Cache-Control' : 'no-cache'}};

axios.get('/get', config)  // <-- config

Если это не работает, вы всегда можете просто добавить к запросу метку времени, чтобы убедиться, что он всегда выполняет запрос.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...