这对我来说是一个非常复杂的名词,因为我对事情的完成方式感到困惑。我有React&Express应用程序,您可以在其中上传数据,并且在上传时会将您重定向到显示数据的其他页面,但是问题是,它仅重定向您一次,并且当您返回主页并尝试上传时文件第二次未上传,整个应用程序崩溃
这是recipe.js文件(部分文件)(实际)
axios({
method: 'post',
url: '/api/recipes',
config: {headers: {'Content-Type': 'multipart/form-data' }},
data: data
})
.then(res => {
window.location.replace(res.data.location)
})
.catch(err => {
if(err.response){
if(err.response.data.redirect === true){
window.location.replace(err.response.data.location)
}
if(err.response.data.message){
alert(err.response.data.message)
}
}
});
recipe.js(部分)(expressjs)
const recipe = await Dish.create({
author: user.username,
name: name,
//properties and values
})
return res.status(200).send({
location: '/recipe/' + recipe.name + '/' + recipe._id
})
view-recipe.js(表达(部分))
componentDidMount(){
const { match: { params } } = this.props;
console.log(`/api/recipe/${params.dishName}/${params.id}`)
axios.get(`/api/recipe/${params.dishName}/${params.id}`)
.then(res => res.data)
.then(data =>{
console.log(data)
}).catch(err=>{
if(err.response.data.message){
alert(err.response.data.message)
}
})
}
view-recipe.js(表达)
router.get('/:dishName/:id', async (req, res) => {
try {
const name = req.params.dishName;
const id = req.params.id;
console.log('name ' + name + ' id ' + id)
const recipe = await Dish.findOne({
name: name,
_id: id
}).lean();
if (!recipe) {
return res.status(404).send({
message: 'recipe not found'
})
}
return res.status(200).send({
recipe
})
} catch (err) {
return res.status(500).send({
message: err.message
})
}
})
最后
index.js(例如,警卫人员在哪里确定jwt验证令牌是否已过期以及路由配置)
router.use('/api/recipes', guardr, require('./recipe'))
router.use('/api/recipe', require('./view-recipe'))
此代码有什么问题?顺便说一句,在配方.js文件(客户端)中的window.location.replace()
之前,我有window.location.href
,它工作了2次。这真的让我感到困惑,因为我是第一次做这个困难的项目。谢谢!