Почему .push () заменяет последний объект массива JSON? - PullRequest
0 голосов
/ 26 апреля 2018

Я разработал базовое CRUD-приложение Angular4, которое взаимодействует с внутренним API-интерфейсом nodejs, который отображает данные массива JSON. Но при добавлении объекта в массив JSON с помощью метода .push () он заменяет последний объект новым добавляемым объектом, а не помещает его в массив.

Ниже приводится определение сотрудника:

export interface Employee {
id:number,
name:string,
review:string[],
peers:string[]
}

Сервисный метод делает HTTP-вызов следующим:

addEmployee(addedEmployee:Employee):Observable<Response>
{
return 
this._http.post("http://localhost:3001/add",addedEmployee)
.pipe(catchError(this.handleError));
}

Код API бэкэнда, который добавляет объект Employee в массив объектов JSON, выглядит следующим образом:

app.post('/add',function(req,res){
var addedEmployee={};
addedEmployee.id=req.body.id;
addedEmployee.name=req.body.name;
addedEmployee.review=req.body.review;
addedEmployee.peers=req.body.peers;
employees.push(addedEmployee);
console.log('added');
res.json(employees);
})

До, промежуточные и последующие структуры внутреннего массива объектов JSON следующие:

До:

employees = [
{
    id: 1,
    name: "John Doe",
    review: ["Hardworking"],
    peers: ["admin", "Matt"]
},
{
    id: 2,
    name: "Matt Hofner",
    review: ["Hardworking"],
    peers: ["admin"]
},
{
    id: 3,
    name: "Judy Ruth",
    review: ["Focused"],
    peers: ["admin", "Matt"]
}
];

Intermediate:

let addedEmployee:Employee = {
  id: 4,
  name: "Trudy",
    review:["Lazy"],
    peers: ["Matt"]
  };

Финал:

employees = [
{
    id: 1,
    name: "John Doe",
    review: ["Hardworking"],
    peers: ["admin", "Matt"]
},
{
    id: 2,
    name: "Matt Hofner",
    review: ["Hardworking"],
    peers: ["admin"]
},
{
    id: 4,
    name: "Trudy",
    review: ["Lazy"],
    peers: ["Matt"]
}
];

1 Ответ

0 голосов
/ 26 апреля 2018

Странно. Возможно, это не лучшее решение, но попробуйте метод .concat ():

app.post('/add',function(req,res){
var addedEmployee={};
var singleEmployeeArray = [];
addedEmployee.id=req.body.id;
addedEmployee.name=req.body.name;
addedEmployee.review=req.body.review;
addedEmployee.peers=req.body.peers;
singleEmployeeArray.push(addedEmployee);
employees.concat(singleNewEmployeeArray);
console.log('added');
res.json(employees);
})
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...