I'am using an Angular2 POST Request with Observable to a Node API. I keep getting a strange JSON Object back as Response.
Response from Node API App - via Chrome Console:
{"_isScalar":false,"source":{"_isScalar":false,"source":
{"_isScalar":false,"source":{"_isScalar":false},"operator":
{"delay":500,"scheduler":{"actions":[],"active":false}}},"operator":
{}},"operator":{"caught":"[Circular]"}}
Angular2 Code:
login2(): Observable<any> {
this.url = 'http://localhost:3080/user/login';
this.obj.email = 'jhon.doe@foo.de';
this.obj.password = 'pass';
let formObj = this.form.getRawValue();
let serializedForm = JSON.stringify(formObj);
let headers = new Headers({ 'Content-Type': 'application/json' });
let options = new RequestOptions({ headers: headers });
var obsRequest = this.http.post(this.url, this.obj, options)
.map(res => res.json())
.catch( (error: any) => Observable.throw(error.json().error || 'Server error') );
console.log(JSON.stringify(obsRequest, this.avoidCircular(obsRequest)));
return obsRequest;
}
P.S. avoidCircular
is an extra workaround for the javaScript built-in JSON.stringify
, cause when I don't use it get the following error:
TypeError: Converting circular structure to JSON
avoidCircual Code:
avoidCircular(objCens) {
var i = 0;
return function(k, v) {
if(i !== 0 && typeof(objCens) === 'object' && typeof(v) == 'object' && objCens == v)
return '[Circular]';
if(i >= 29)
return '[Unknown]';
++i;
return v;
}
}
The API call is working fine via Postman!
Any idea how to fix this please?