我认为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)
}
}
你有什么线索吗? 感谢。
答案 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)
}
}