[英]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
将其添加到某个集合中。 所以你可以进行下一个流程:
希望这有效。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.