express - res.redirect() 除了使用 CTRL-R 之外不起作用:缓存问题?
问题描述
我想我对 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
函数。
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)
}
}
你有什么线索吗?谢谢。
解决方案
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
功能
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)
}
}