Node.js url.parse返回string

我正在尝试做一些简单的分页。 为此,我试图parsing当前的URL,然后产生链接到相同的查询,但增加和减lesspage参数。

我试着做下面的事情,但它产生相同的链接,没有新的page参数。

 var parts = url.parse(req.url, true); parts.query['page'] = 25; console.log("Link: ", url.format(parts)); 

URL模块的文档似乎表明, format是我需要的,但我做错了什么。

我知道我可以迭代和手动build立string,但我希望有一个现有的方法。

如果你看最新的文档 ,你可以看到url.format行为如下:

  • 将使用search来代替query
  • query (对象;请参阅查询string)将只用于search不存在。

而当你修改querysearch保持不变,它使用它。 所以要强制它使用query ,只需从对象中删除search

 var url = require("url"); var parts = url.parse("http://test.com?page=25&foo=bar", true); parts.query.page++; delete parts.search; console.log(url.format(parts)); //http://test.com/?page=26&foo=bar 

确保你总是阅读最新版本的文档,这将为您节省很多麻烦。

在我看来,这是一个节点的错误。 你可以试试

 // in requires var url = require('url'); var qs = require('querystring'); // later var parts = url.parse(req.url, true); parts.query['page'] = 25; parts.query = qs.stringify(parts.query); console.log("Link: ", url.format(parts)); 

另一个答案是好的,但你也可以做这样的事情。 querystring模块用于处理查询string。

 var querystring = require('querystring'); var qs = querystring.parse(parts.query); qs.page = 25; parts.search = '?' + querystring.stringify(qs); var newUrl = url.format(parts); 

这个简单的混帐。 干掉代码并获取URLvariables而不需要('url')我使用: https : //gist.github.com/4542588

这将parsing并将urlvariables移动到req.urlparamsvariables中。 它在请求工作stream程中尽早运行,因此适用于所有expressjspath。