【问题标题】:Express + node.js API filteringExpress + node.js API 过滤
【发布时间】:2014-12-07 23:49:19
【问题描述】:

我正在开发一个节点 API。 我有像GET /messages这样的端点

这将返回所有消息。我想在这个端点上进行分页,比如

GET /messages?filter=my_filter_string&limit=10&offset=10

过滤语句会是这样的

{fieldName1}={fieldValue1}&...{fieldNameN}>{fieldValueN}.
Operations can be =, > or <. < and > operations are only for number, integers and dates

我使用 sequelize 作为 ORM,使用 postgresql 作为 DB。 我的问题是如何解析 my_filter_statement 并将其转换为用于 sequelize 的搜索条件对象。 另外,如果我像这样调用 API

GET /messages?filter="id=10&contentlength>20"&limit=10&offset=10

它不工作

【问题讨论】:

  • 我想知道类似的事情..或者只是使用 ?filter={where:{id:10}} 但我不知道这是否安全。

标签: javascript node.js postgresql rest express


【解决方案1】:

你能有吗,例如:

GET /messages?greater=1&less=5&limit=10&offset=10

然后在节点中:

var url = require('url');
var url_parts = url.parse(request.url, true);
var query = url_parts.query;

并将查询参数,例如大于/小于(可以缩写为“gt”和“lt”)与语句中需要的符号匹配?

【讨论】:

  • 我不能像GET /messages?greater=1&amp;less=5&amp;limit=10&amp;offset=10 这样的要求非常具体。正如我在问题中提到的那样,我必须发展
  • 在这种情况下,我确定你可以使用 encodeURI 和 decodeURI 吗?
  • 你能给出一个具体的用例吗?我的意思是如何调用 API。我的意思是我必须编码my_filter_statement。如何在服务器端解析它。您能否修改您的答案以包含该案例,或者您能否指出任何示例或文档。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-01-14
  • 1970-01-01
  • 2013-02-07
  • 1970-01-01
  • 2018-12-03
  • 2021-03-11
  • 1970-01-01
相关资源
最近更新 更多