我正在尝试在当前url处添加多个查询字符串值,但我不知道该怎么做。
我正在使用express
和Nodejs
。
我创建了一个可以读取值的路由
router.get('/posts', (req, res) => {
Post.find({}).populate('files').exec((err, posts) => {
if(err){
res.redirect('/');
console.log(err);
} else {
console.log(req.query)
res.render('home');
}
});
});
在主页中,我设置了一些添加查询值的链接
<a href="?Value1=1">Value1</a>
<a href="?Value2=2">Value2</a>
<a href="?Value3=3">Value3</a>
但是,每当我单击其中之一时,URL就会重置查询字符串并添加已链接链接的查询值。
那我怎么把它们串联起来?
答案 0 :(得分:1)
首先,您必须将所有查询字符串存储在一个变量中,以便稍后使用;其次,您需要解析当前查询,将其与先前存储的查询连接起来,然后重新生成最终查询。
这里是一个例子:
const qs = require('querystring')
let queries = {}
router.get('/posts', (req, res) => {
Post.find({}).populate('files').exec((err, posts) => {
if(err){
res.redirect('/');
console.log(err);
} else {
queries = Object.assign({}, queries, req.query)
// this line will log concatenated query
console.log(qs.stringify(queries))
res.render('home');
}
});
});
注意:请不要忘记安装querystring模块。
npm i querystring
答案 1 :(得分:0)
我对你的问题有些困惑。
如果您希望链接为/?Value1=1&value2=2&value3=3
,则可以使用:
//script.js
let oldUrl = window.localtion;
let newUrl = oldUrl + '&value2` //and the same with value3
$('yourElement').attr('href')= newUrl; //yourElement maybe id,name,...etc
希望它能对您有所帮助!