【问题标题】:JS API Fetch database items based on values of their certain parametersJS API 根据某些参数的值获取数据库项
【发布时间】:2018-07-29 13:06:43
【问题描述】:

我有一个看起来像这样的数据库:

[{"id":1,"type":"a"},
 {"id":2,"type":"b"},
 {"id":3,"type":"c"},
 {"id":4,"type":"a"}]

我需要的是使用 fetch 仅获取其类型参数具有特定值的数据库项目(例如,获取 type='a' 应该获取 ID 为 1 和 4 的项目)。到目前为止,我只有这样的 get 功能:

get() {
return new Promise((resolve, reject) => {
  fetch(`url`,) 
    .then(response => response.json())
    .then(json => resolve(json))
    .catch(err => {
      reject(err);
    });
});

并且无法弄清楚如何过滤数据库。

【问题讨论】:

    标签: javascript reactjs fetch


    【解决方案1】:

    前端解决方案:在前面过滤您的 json 结果:(如果您的数据库有很多项目,这不是一个好主意,因为您仍然通过 http 获取所有项目,然后在浏览器中过滤它们,即服务器和浏览器的额外工作)

    get(type) {
        return fetch('url')
          .then(res => res.json())
          .then(json => json.filter(item => item.type == type))
          //.catch(err => doSomethingWithErr(err)) 
          //you can handle error here or when you use get
    }
    

    后端解决方案:将查询字符串添加到您的 url 并在后端处理它以仅从数据库中获取所述类型。 由于我们不了解您的后端堆栈,因此无法帮助您编写代码。

    【讨论】:

    • 嗯,这很简单。很好用,非常感谢”
    • 无需创建新的承诺。您可以只返回fetch 并从第二个then 返回json.filter(item => item.type == type)
    • @Tholle 确实返回 fetch 做同样的事情。刚刚复制了OP贴的代码,赶紧修改,我现在去编辑一下。
    【解决方案2】:

    以下是MDN的引用

    Fetch API 提供了一个 JavaScript 接口,用于访问和操作 HTTP 管道的各个部分,例如请求和响应。它还提供了一个全局 fetch() 方法,该方法提供了一种通过网络异步获取资源的简单、合乎逻辑的方法。

    Fetch API 只是帮助您处理 AJAX 调用,现在由您(客户端)对响应执行一些操作,并将其转换为您想要的数据。

    Fetch API 无法帮你过滤操作。

    你现在有两个选择:

    1. 让服务器完成过滤工作 -> 您需要将一些参数传递给 AJAX 调用。
    2. 使用filter function 过滤您的响应数据。检查this answer 即可。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-08-18
      • 1970-01-01
      • 1970-01-01
      • 2021-02-08
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多