我遇到一种情况,想为我的nodejs应用程序创建过滤器。 我想根据位置过滤产品,我当前的过滤器如下所示。
www.example.com/product-category?q=New%20York
但是我想要这样。
www.example.com/product-category/new-york
如何通过NodeJS / Express / Mongodb实现这一目标
答案 0 :(得分:1)
要获取“类别” 作为 url参数而不是查询参数,我们需要稍微更改语法>
router.get('/someRoute')
。然后使用GET /someRoute?city=paris
router.get('/someRoute/:city')
。我们用GET /someRoute/paris
因此,在您的情况下,解决方法是:
app.get('/product-category/:city', (req, res) => {
// Handle the request here
const city = req.params.city;
});
%20
问题对于纽约,API调用包括空格字符,该字符被“编码” 插入%20
。如果要将其转换为连字符,则可以使用:
String.toLowerCase()
小写所有字符(西雅图=>西雅图)String.split()
将URL分解为由%20
分隔的块Array.filter()
删除所有“空/空白” 块Array.join()
通过用连字符 -
将这些部分放在一起看起来像这样
const cities = ['New York', 'New%20York', ' New york', '\tnew York'];
const format = s => s.toLowerCase()
.split(/\s|%20/)
.filter(Boolean)
.join('-');
const clean = cities.map(format);
console.log(clean);
const format = s => s.toLowerCase()
.split(/\s|%20/)
.filter(Boolean)
.join('-');
app.get('/product-category/:city', (req, res) => {
// Get and format the "city" parameter
const city = format(req.params.city);
});