JSON 服务器 - 将数据发布到数组中的特定对象中



我正在练习获取 api,但在发布数据时遇到问题......在第一步中,我发布到"http://localhost:3003/users",它工作正常 ->代码:

(async () => {
const res = await fetch('http://localhost:3003/users', {
method: 'POST',
body: JSON.stringify({ name, password }),
headers: {
'Content-Type': 'application/json'
}
});

但在另一个组件(第二步(中,我有以下代码:

useEffect(() => {
(async () => {
try {
const resp = await fetch(`http://localhost:3003/users/${userID}`, {
method: 'POST',
body: JSON.stringify({ tasks: [1, 2, 3] }),
headers: {
'Content-Type': 'application/json'
}
}).then(res => console.log(res));
} catch (err) {
console.error(err);
}
})();
}, [userID]);

登录控制台后,得到这个:

Response {type: "cors", url: "http://localhost:3003/users/0", redirected: false, status: 404, ok: false, …}
body: (...)
bodyUsed: false
headers: Headers {}
ok: false
redirected: false
status: 404
statusText: "Not Found"
type: "cors"
url: "http://localhost:3003/users/0"

但是当我去 http://localhost:3003/users/0 时,我可以看到用户,所以似乎 url 有效......当然,当我删除 ${userID} 时它可以工作,但数组被添加为最后一个对象,而不是这个特定的用户......更重要的是 - http://localhost:3003/users/${userID} 适用于 GET 方法。

问题是 - 如何将数据发布到 JSON 服务器中数组中的单个对象?

db.json:

{
"users": [
{
"id": 0,
"name": "Ola",
"password": "12345"
},
{
"name": "newuser",
"password": "newuser",
"id": 1
}
]
}

表单提交检查是否存在具有此名称的用户;如果没有,则发布新用户

已解决

我使用了错误的方法 - 开机自检而不是补丁

因此,当您发布某些内容时,在您的情况下,您将其发布到 users 数组

所以应该以这种方式尝试

fetch(`http://localhost:3003/users`)

在你的身体里,你需要传递ID

{ id:`${userId}` tasks: [1, 2, 3] }

更新这些内容并检查。

更新

由于它向用户对象添加新属性需要使用补丁而不是 Post

您可以在此处阅读更多信息

相关内容

  • 没有找到相关文章

最新更新