Mongodb 在Express中作为req.params的Url
我想使用express和MongoDB查找基于URL的文档 我的模式包括Mongodb 在Express中作为req.params的Url,mongodb,express,routes,url-parameters,Mongodb,Express,Routes,Url Parameters,我想使用express和MongoDB查找基于URL的文档 我的模式包括 bandUrl: { type: String } 这是我在Express服务器内部的路由 // Get Single Band By bandUrl router.get('/bandUrl/:url', (req, res) => { quoteGenerator.find({bandUrl: req.params.url}).then(gen => res.json(ge
bandUrl: {
type: String
}
这是我在Express服务器内部的路由
// Get Single Band By bandUrl
router.get('/bandUrl/:url', (req, res) => {
quoteGenerator.find({bandUrl: req.params.url}).then(gen => res.json(gen))
})
我将其中一个文档的bandUrl设置为'http://localhost:3000/"
我使用URL以外的其他东西测试了路由-只需使用字符串就可以了。。。不过我真的很想使用URL。有办法做到这一点吗
这是我申请表上的假/测试路线
const getFakeInfo = async () => {
try {
const response = await fetch(`/api/autoquotegenerators/bandUrl/http://localhost:3000/"`, {
method: 'GET',
})
const responseData = await response.json()
console.log(responseData)
} catch (error) {
console.log(error)
}
}
我认为URL中额外的斜杠是导致问题的原因
谢谢你的帮助 要使用的是
encodeURIComponent()
。此函数将转义所有特定于URI的字符,以便正确解释它们。您的请求代码应该如下所示:
const response = await fetch(`/api/autoquotegenerators/bandUrl/${encodeURIComponent("http://localhost:3000/")}`, {
method: 'GET',
})
如果您想了解有关此函数的更多信息,可以查看。您想使用的是
encodeURIComponent()
。此函数将转义所有特定于URI的字符,以便正确解释它们。您的请求代码应该如下所示:
const response = await fetch(`/api/autoquotegenerators/bandUrl/${encodeURIComponent("http://localhost:3000/")}`, {
method: 'GET',
})
如果你想了解更多关于这个函数的信息,你可以浏览一下