因此,我正在构建一个运行express js的node js应用程序,并在app.js中设置如下路由:
router.get("/db/:dbName", (req, res) => {
var dbName = req.params.dbName
if (dbName) {
var coll = db.collection(dbName);
coll.find().toArray()
.then(results => {
res.send(results);
})
.catch(err => {
console.error(err)
})
} else {
console.log("put a dbName")
}
})
它只需单击一个按钮,就会从mongodb数据库中读取并输出“dbname”集合中的文档。 然后,我想到了转到一个单独的选项卡并键入“localhost:3000/db/collection”,当然,它在没有按钮的情况下仍然可以工作(即它返回集合中的所有文档)。 我的问题是,有什么方法可以防止这种行为,实质上,只有当你使用按钮时,才可以访问路线。
您可以使用一个中间件,通过单击按钮查找传递的值。 如果该值没有传递给服务器,则可以检查该值并相应地采取操作
function middleware(req, res, next) {
if(req.value) {
next()
} else {
return "Some error"
}
}
app.route('/route', middleware, function(req, res) {})
进一步查看https://expressjs.com/en/guide/using-middleware.html