窗口位置替换只能使用一次

时间:2019-06-01 10:21:59

标签: javascript node.js reactjs mongodb express

这对我来说是一个非常复杂的名词,因为我对事情的完成方式感到困惑。我有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次。这真的让我感到困惑,因为我是第一次做这个困难的项目。谢谢!

0 个答案:

没有答案