解析节点中的查询字符串以允许逻辑运算符

Parsing query string in Node to allow logical operators

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

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

我无法传入像这样的查询字符串 http://localhost:3001/getSomeData?name=jim&age=21||eyeColor=red,它在查询字符串中包含逻辑运算符,并且会抓取所有数据并在名称为 "jim"、年龄为“ 21" 或 eyeColor 是 "red"。所以这将给我所有 eyeColor 红色 and/or 年龄为 21 岁的吉姆。如果我使用这个 age=21&&eyeColor=red 我希望得到所有眼睛颜色均为红色且年龄为 21 岁的吉姆。

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

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} 此选项将省略“?”。

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

文档很好,非常适合我的情况。