在Node中解析查询字符串以允许逻辑运算符

时间:2017-12-20 20:32:58

标签: json node.js express query-string querystringparameter

我想要类似于node-odata提供的内容,但我不想将它包装在我的数据库中(我正在使用Cassandra,并且已经设置了带路由的Express应用程序等)。

目前,我从数据库中获取数据(最终将JSON对象返回给用户)然后使用查询字符串中传递的值我使用JavaScript修改结果并将修改后的JSON对象传递给用户

我无法传入一个像http://localhost:3001/getSomeData?name=jim&age=21||eyeColor=red这样的查询字符串,其中包含查询字符串中的逻辑运算符,并且会获取所有数据并将其过滤到名称为“jim”的位置,年龄为“21”或者eyeColor是“红色”。因此,这将给我所有吉他的eyeColor红色和/或21岁。如果我使用这个age=21&&eyeColor=red我希望所有吉姆都有两个眼睛颜色为红色并且是21岁。

我正在考虑使用可以传入的自定义查询字符串(即在查询字符串末尾添加inclusive=age&inclusive=eyeColor),在Node中,我会修改过滤结果来处理这些属性({{ 1}}和age)就好像它们是用eyeColor OR运算符传递的一样)。但是,这非常冗长,我希望有一个库或其他更简单的实现来解决这个问题,或者以某种方式让我将简单的逻辑运算符传递给查询字符串。

2 个答案:

答案 0 :(得分:0)

npm i querystringify  //or
https://cdnjs.cloudflare.com/ajax/libs/qs/6.7.0/qs.min.js


//it will will return an object
const myObject = Qs.parse(location.search, {ignoreQueryPrefix: true}); 
//you can use object destructuring.
const {age,eyeColor}=Qs.parse(location.search, {ignoreQueryPrefix: true})

默认情况下,解析将包含“?”太。

{ignoreQueryPrefix:true}此选项将省略“?”。

答案 1 :(得分:0)

我最终使用这个库来实现我想要的:https://www.npmjs.com/package/jspath

这是一份很好的文档,可以很好地适合我的情况。