将查询字符串解析为对象node.js

时间:2016-11-08 18:37:14

标签: javascript node.js rest express

我收到的请求看起来像这样:

/api/stores?offset=10&limit=15?order=+name?filter=name='Tesco|distance=4

我需要将查询中的+名称解析为对象,如果在名称前为+ {name: 1},,在名称之前为{name:-1} if。过滤查询应该看起来像{name:'Tesco', distance:4}

任何人都可以帮助我做到这一点,以达到最佳效果

1 个答案:

答案 0 :(得分:0)

无论是谁向你发送垃圾网址都应该被打,如果你没有机会改变它,你可以使用这个黑客。

var url = "/api/stores?offset=10&limit=15?order=+name?filter=name='Tesco|distance=4";
var m = url.match(/name='(.+?)\|distance=(\d+)/);
console.log(m[0]); // returns name='Tesco|distance=4
console.log(m[1]); // returns Tesco
console.log(m[2]); // returns 4 as a string value

使用m 1和m [2]可以构建一个新对象。

严重的是,该网址是垃圾,如果可以,请修复该问题,您可以使用非黑客获取这些值并使用querystring.parse构建对象。