除了CTRL-R之外,res.redirect()不起作用:缓存问题?

时间:2018-05-19 09:40:13

标签: express redirect caching google-cloud-datastore

我认为Express有一种“缓存问题”(我使用Google Datastore作为数据库)。

触发以下delete路线时:

  • 我的项目已从数据库中正确删除
  • res.redirect()工作正常
  • 但我的dashboard仍显示已删除的项目 - > 我需要CRTL-R才能看到它消失......

我的delete路线:

router.post('/delete', async (req, res) => {
  await deleteOneHouse(req.params.houseID)
  res.header('Cache-Control', 'private, no-cache, no-store, must-revalidate')
  res.redirect('/dashboard')
})

如果需要,请deleteOnHouse func。

async function deleteOneHouse(ID) {
  try {
    const houseKey = datastore.key(['data', ID])
    datastore.delete(houseKey).then(() => {
      console.info(`House ${ID} deleted`)
      return
    })
  } catch (e) {
    console.error(e)
  }
}

你有什么线索吗? 感谢。

1 个答案:

答案 0 :(得分:1)

console.log()肯定是你调试的朋友。

res.redirect()操作结束前触发了delete。 添加await,效果很好。

要删除的

Post路由:

router.post('/delete', async (req, res) => {
  // Delete this house
  await deleteOneHouse(req.params.houseID)
  // Redirect to Dashboard
  res.redirect('/dashboard')
})

Delete func。

async function deleteOneHouse(ID) {
  try {
    const houseKey = datastore.key(['data', ID])
    const deleted = await datastore.delete(houseKey)
    console.info(`House ${ID} deleted`)
    return
  } catch (error) {
    console.error(error)
  }
}