mongodb数据已更新,但是axios正在获取旧数据

时间:2018-11-14 16:10:51

标签: node.js reactjs mongodb redux

当用户在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);
     });
});

//动作

 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 :(得分:1)

最可能的原因是axios缓存。查看axios设置中的内容以及

'Cache-Control': 'no-cache' 

已设置。通常通过:

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

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

如果这不起作用,您可以随时向请求添加时间戳,以确保始终发出请求。