如何将多个查询值添加到url

时间:2019-07-01 14:56:13

标签: node.js express

我正在尝试在当前url处添加多个查询字符串值,但我不知道该怎么做。

我正在使用expressNodejs

我创建了一个可以读取值的路由

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就会重置查询字符串并添加已链接链接的查询值。

那我怎么把它们串联起来?

2 个答案:

答案 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 

希望它能对您有所帮助!