簡體   English   中英

使用來自 API 的過濾器推送和拉取 JSON 數據

[英]Pushing and pulling JSON data with a filter from API

我正在研究一個 REACT JS 項目,試圖創建一個小型待辦事項列表應用程序。

我的數據在 JSON 文件中,目前托管在 jsonbin.io 上,格式如下所示......

{
  "moduleAccess": {
    "tasks": [
      {
        "email": "campbell@yahoo.com",
        "id": 0,
        "task_name": "Call mom",
        "due_date": 44875,
        "completed": true
      },
      {
        "email": "palsner593@gmail.com",
        "id": 1,
        "task_name": "Buy eggs",
        "due_date": 44880,
        "completed": false
      },
      {
        "email": "rob@gmail.com",
        "id": 2,
        "task_name": "Go to dog park",
        "due_date": 44879,
        "completed": false
      }
    ]
  }
}

目前,我使用 jsonbin.io 的 API 獲取數據。數據被放入一個名為Tasks的變量中。 如果用戶更新特定的待辦事項、刪除待辦事項或創建新的待辦事項,所有這些更改都會放回Tasks變量中。 然后我可以將這些任務推送到服務器。

我上面解釋的很好; 然而,需要注意的是,我想允許多個用戶登錄,然后只提取屬於他們各自 email 的 Todo 項目。

例如, campbell@yahoo.com已登錄到我的應用程序。 在這種情況下,在我的獲取拉取請求中,我可以指定我只想要campbell@yahoo.com的記錄

 async function loadData() {
    const newPath = '$..tasks[?(@.email==' + campbell@yahoo.com + ')]';
    console.log(newPath);
    const url = 'https://api.jsonbin.io/v3/b/*binid*?meta=false'
    const response = await
      fetch(url, {
        method: "GET",
        headers: {
          "X-Master-Key": key,
          "X-JSON-Path": newPath
        }
      });
    const data = await response.json();
    setTasks([...data]);  //or whatever
    console.log(tasks);
  }

這個概念也有效。 但是,在用戶進行更改后將我的任務數據推送回服務器時,我遇到了一個問題。 我正在使用的 API 似乎不允許在 PUSH 時指定 JSON 路徑的參數。 JSON-PATH 僅允許用於拉取請求。 所以當我向服務器推送數據時,似乎所有 JSON 數據都會被覆蓋,無論用戶如何。

有人有其他方法來推送/拉取用戶特定的數據嗎? 如果我提供的細節是不必要的,我很抱歉。 不確定解決此問題的最簡單方法是反應應用程序。

任何幫助表示贊賞。 謝謝!

我對 jsonbin.io API 做了一些研究,並提出了一個可能有效的解決方案。

所以我不確定這是否有效,但仍然有效。

創建新垃圾桶時,您可以使用X-Collection-Id將其添加到某個集合中。 所以你可以進行下一個流程:

  1. 用戶注冊時,為該用戶創建一個單獨的任務箱
  2. 將具有 bin id 的用戶添加到某些用戶集合中,您將在其中擁有所有用戶
  3. 當用戶授權時,使用您在代碼中使用的過濾器獲取他的 bin id,並將其存儲以備將來在您的應用程序中的某個地方使用。
  4. 在此之后,您將能夠通過該 bin id 獲取用戶任務並對其進行修改,因為現在它將成為每個用戶的單獨 bin,您可以簡單地覆蓋其所有內容。

希望這有效。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM