Javascript Json服务器:错误:插入失败,id重复
Hii all我正在尝试使用post方法将数据发布到json服务器,但不幸的是,我有错误,我的应用程序有按钮跟随等,我希望当用户单击跟随数增加并保存到json文件时,因此现在当用户单击按钮时,我得到以下错误: 注意:我使用的是fakes json服务器: 这是服务Javascript Json服务器:错误:插入失败,id重复,javascript,angular,typescript,angular6,Javascript,Angular,Typescript,Angular6,Hii all我正在尝试使用post方法将数据发布到json服务器,但不幸的是,我有错误,我的应用程序有按钮跟随等,我希望当用户单击跟随数增加并保存到json文件时,因此现在当用户单击按钮时,我得到以下错误: 注意:我使用的是fakes json服务器: 这是服务 import { Injectable } from '@angular/core'; import { HttpClient } from '@angular/common/http'; import {Status } from
import { Injectable } from '@angular/core';
import { HttpClient } from '@angular/common/http';
import {Status } from '../model/statuses.model';
import { Comment } from '../model/comments.model';
@Injectable({
providedIn: 'root'
})
export class UserService {
status: Status[];
constructor(private http: HttpClient) { }
statusUrl = 'http://localhost:3000/statuses';
commentsUrl = 'http://localhost:3000/comments';
getStatuses() {
return this.http.get<Status[]>(this.statusUrl);
}
addStatus(status: Status) {
return this.http.post(this.statusUrl, status);
}
addComments(comment: Comment) {
return this.http.post(this.commentsUrl, comment);
}
}
以下是json文件:
{
"statuses": [
{
"id": 1,
"statusId": 20,
"likes": 121,
"following": 723,
"followers": 4433
}
]
}
这是模型
export class Status {
id: number;
statusId: number;
like: number;
following: number;
followers: number;
}
我在代码中做错了什么 从您正在使用的伪json服务器的
Id值是不可变的。PUT或PUT主体中的任何id值
补丁请求将被忽略。只有在POST请求中设置的值才会
被尊重,但只有在尚未被接受的情况下
您正在尝试更新现有状态,因此需要put call而不是post。大概是这样的:
updateStatus(status: Status) {
return this.http.put(this.statusUrl + '/' + status.id, status);
}
并在persistStatus函数中使用它
persistStatus(status) {
his.userService.updateStatus(status)
.subscribe(data => {
this.status = [status];
});
}
服务器端的Id字段上似乎存在唯一的密钥约束。我现在需要更改什么?服务器端代码是什么样子的?它是否为发布到它的每个状态生成唯一的ID?如果没有,那么在进行post调用时,您需要在json中提供一个唯一的id值。这里是consolo.log状态:
[{…}]0:followers:4435follower:725id:1likes:121statusId:20_uuproto_uu:Objectlength:1_uproto_u:Array(0),还记得我使用的是假的json服务器吗?我努力得到这项工作,因为我想,谢谢你是否正在创建状态JSON,你在电话后发送?你是从文件中读取它们的吗?是的,从json服务器生成的json文件中读取,我不明白。您正在从json服务器生成json并将其发回服务器?如果是,你能告诉我发生这种情况的代码吗?json服务器创建一个假的rest api并生成一个名为myJsonFile.json的假文件。在这个文件中有样本数据,你可以添加你的假数据、端点名称等,这是我的报告
updateStatus(status: Status) {
return this.http.put(this.statusUrl + '/' + status.id, status);
}
persistStatus(status) {
his.userService.updateStatus(status)
.subscribe(data => {
this.status = [status];
});
}