私はAngular 2を学んでおり、興味深い問題があります。json-server を使用してサービス呼び出しをモックし、正常に取得しています。ただし、作成と更新に問題があります。
私は次のような通知と呼ばれる基本モデルを使用しています:-
export class NotificationModel {
constructor(
public id: number,
public name: string,
public description: string
){}
}
ここに私の基本的な機能がありますが、ここではそれほど奇妙ではありません!
createNotification(notification : NotificationModel) {
return this._http.post('http://{myurl}/notifications', JSON.stringify(notification))
.map(res => res.json());
}
updateNotification(notification : NotificationModel) {
return this._http.put('http://{myurl}/notifications/' + notification.id, JSON.stringify(notification))
.map(res => res.json());
}
簡単なテスト値を渡そうとすると、代わりに次のようになります:-
create は id に対して 9 文字の英数字の値を生成し、他のフィールドには何も生成しません。これが私のオブジェクトです:-
{"id":5,"name":"NEW NOTIFICATION","description":"NEW NOTIFICATION DESCRIPTION"}
更新:-これが作成するものです
{
"id": "rkxCLjZLx"
}
更新により、他の 2 つのフィールドが空白になり、id フィールドのみが保持されます。これが私のオブジェクトです
{"id":"3","name":"Notification 3","description":"UPDATE DESCRIPTION"}
更新:-更新後の記録は次のとおりです
{
"id": "3"
}
これはjson-serverの問題ですか、それとも私が間違っていることは明らかですか?
アップデート
サービスを呼び出すために使用する関数は次のとおりです
addNotification(notification : NotificationModel) {
this._notificationService.createNotification(new NotificationModel(5,
'NEW NOTIFICATION', 'NEW NOTIFICATION DESCRIPTION')).subscribe(
data => {
// refresh the list
this._notificationService.getNotifications().subscribe(res => {
this.notifications = res;
}
);
return true;
},
error => {
console.error("Error adding notification!");
return Observable.throw(error);
}
);
}
updateNotification(notification : NotificationModel) {
notification.description = 'UPDATE DESCRIPTION';
this._notificationService.updateNotification(notification).subscribe(
data => {
// refresh the list
this._notificationService.getNotifications().subscribe(res => {
this.notifications = res;
}
);
return true;
},
error => {
console.error("Error updating notification!");
return Observable.throw(error);
}
);
}