使用node.js删除查询参数不起作用

时间:2017-05-31 07:09:37

标签: javascript node.js

我正在使用此代码从网址中删除查询参数,但它无效。你能好好看一下吗?

const url = require('url')

const obj = url.parse('http://www.example.com/path?query1=val1&query2=val2', true)
delete obj.query.query2
const link = url.format(obj)
console.log(link) // I was expecting the removal of query2 but it didn't happen

它记录了与上面传递的相同的网址,为什么query2未删除?感谢

4 个答案:

答案 0 :(得分:2)

您需要从对象中删除搜索节点

const obj = url.parse('http://www.example.com/path?query1=val1&query2=val2', true)
delete obj.query.query2
delete obj.search

const link = url.format(obj)
console.log(link)

这会返回您的网址https://github.com/Microsoft/VisualStudio2017Launch_KeynoteDemos/tree/master/VSTS%20and%20DevOps

答案 1 :(得分:1)

即使您从查询对象中删除了query2,搜索字段中仍然存在query2

const url = require('url');

const obj = url.parse('http://www.example.com/path?query1=val1&query2=val2', true)
console.log(obj);
delete obj.query.query2
delete obj.search
console.log(obj);
const link = url.format(obj)
console.log(link)

答案 2 :(得分:1)

如果您查看url模块的源代码(https://github.com/defunctzombie/node-url/blob/master/url.js)。你可以看到 它将首先查看搜索节点(第413行)。同时删除它,以便评估查询对象。

删除obj.search;

答案 3 :(得分:0)



const url = require("url")

const urlObj = url.parse('http://www.example.com/path?query1=val1&query2=val2', true)

delete urlObj.query.query2
delete urlObj.search

const newUrl = url.format(urlObj)

console.log(newUrl) // print >> http://www.example.com/path?query1=val1