Javascript Json服务器:错误:插入失败,id重复

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

Hii all我正在尝试使用post方法将数据发布到json服务器,但不幸的是,我有错误,我的应用程序有按钮跟随等,我希望当用户单击跟随数增加并保存到json文件时,因此现在当用户单击按钮时,我得到以下错误:

注意:我使用的是fakes json服务器:

这是服务

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]; 
    }); 
}