【发布时间】:2017-12-20 20:32:57
【问题描述】:
我想要类似于 node-odata 提供的东西,但我不想将它包裹在我的数据库中(我正在使用 Cassandra,并且已经有一个 Express 应用程序设置了路线等)。
目前,我从数据库中获取数据(最终将返回一个 JSON 对象给用户),然后使用查询字符串中传递的值,我使用 JavaScript 修改结果并将修改后的 JSON 对象传递给用户.
我不能传入像 http://localhost:3001/getSomeData?name=jim&age=21||eyeColor=red 这样的查询字符串,它在查询字符串中包含逻辑运算符,并且会抓取所有数据并过滤名称为“jim”、年龄为“21”或 eyeColor 为“红色的”。因此,这将给我所有眼睛颜色为红色和/或年龄为 21 岁的吉姆。如果我使用这个 age=21&&eyeColor=red,我希望得到所有眼睛颜色均为红色且年龄为 21 岁的吉姆。
我正在考虑使用可以传入的自定义查询字符串(即inclusive=age&inclusive=eyeColor 附加在查询字符串的末尾),在 Node 中,我会修改过滤结果以处理这些属性(age 和eyeColor) 就好像它们是通过 || OR 运算符传入的一样)。但是,这非常冗长,我希望有一个库或其他更简单的实现可以解决这个问题,或者以某种方式让我将简单的逻辑运算符传递到查询字符串中。
【问题讨论】:
-
您所犯的错误是试图更改查询字符串的工作方式。相反,在查询字符串中传递您想要解析的值,例如
?query=name%3Djim%26age%3D21%7C%7CeyeColor%3Dred,然后您可以访问该值并自行解析它。 -
@zzzzBov 好的,有道理,感谢您的回复!您是否碰巧知道一个可以解析和过滤类似字符串的库(我找不到)。否则,我将按照您的建议编写自己的逻辑来处理查询字符串。
标签: json node.js express query-string querystringparameter