2017-11-15 6 views
0

私は.postペイロードと "要求に有効なレコードセットが含まれていません"という400のエラーが発生するのに苦労しています。私はPostgres DBに投稿したいと思います。ここに私のペイロードがサーバーに送られています。これはJSON形式の文字列です。それは拒絶されています。私は残りの部分にnoobのだと角度JSを、学習などフォーム入力からJSONオブジェクト用のClientHttpを使ってAngular REST APIを設定する方法は?

{"resource":[{"first_name":"John","last_name":"Johnson","main_skill_title":"Application developer - frontend","main_skills":"Angular,JavaScript",,"country":"United States","email":"[email protected]"}]} 

DreamFactoryミドルウェアはコンソールでエラーメッセージと、この場合には、彼らのAPIのドキュメントで推奨してURLが設定され:

http://localhost:8080/api/v2/pfpsql/_table/members 400 (Bad Request) 

DreamFactoryミドルウェアはAngular 2の例ですが、Angular開発のRCステージで書かれていて、古くなっています。また、コードはスタイルガイドに従っていません。

私は成功しました.get。このコードは正常に動作し、Angular Material2 DataTableに手動でデータベースに入力したデータを入力します。コンポーネントで

GET:サービスで

constructor(private http: HttpClient) {} 

    ngAfterViewInit() { 
    this.membersAdminService = new MembersAdminService(this.http); 

    // This is for the Material2 DataTable. 
    Observable.merge(this.paginator.page) 
     .startWith(null) // Delete this and no data is downloaded. 
     .switchMap(() => { 
     return this.membersAdminService.getMembers(
      this.paginator.pageIndex); 
     }) 
     .map(data => { 
     return data.resource; // Change from json to array data. 
     }) 
     .subscribe(data => { 
     this.dataLength = data.length; 
     this.dataSource.data = data; 
     }); 
    } 

がGET:

constructor(
    private http: HttpClient, 
) { } 


    public getMembers(page: number): Observable<DfApi> { 
    return this.http.get<DfApi>(this.baseUrl, {headers: this.headers}); 
    } 

問題が.postのペイロードです。私はこのコードをベースとして使用し、様々なソースから様々なObservable演算子とHttpClientの提案を試みましたが、dbにメンバーを追加したものは何もありませんでした。私は間違ったトラックにはっきりしていますが、どこに?このコードのデータパッケージは、この記事の冒頭にリストされています。サービスで

POST:コンポーネントで

public addMember(memberData) { 
    this.http.post(this.baseUrl, memberData, {headers: this.headers}) 

POST:

save(addMemberForm) { 
    const enteredData = this.addMemberForm.addEditMemberForm.value; 
    const memberData = JSON.stringify(enteredData); 
    const jsonData = '{"resource": [' + memberData + ']}'; 
    this.membersAdminService.addMember(jsonData); 
    } 

答えて

0

私はJSON.parseを持つ配列形式でデータを配置する必要がありました。 jsonの文字列は受け入れられませんでした。私はまた、修正するためにいくつかの他のDBセットアップの問題を抱えていました。私はPostgresがラクダの大文字小文字の区別はなく、ファーストネームであることを忘れることはできません。しかし、私はこのコードがそれほど簡潔であるとは思わない。それはハックのように見えます。私は非常に他の提案にオープンです!

save(addMemberForm) { 
    const enteredData = this.addMemberForm.addEditMemberForm.value; 
     // Result is JS object 

    const memberData = JSON.stringify(enteredData); 
     // Result is a string instead. 

    const jsonData = '{"resource": [' + memberData + ']}'; 
     // Result is a string in JSON format in DreamFactory required format with {"resource": [ 

    const jsonArray = JSON.parse(jsonData); 
     // Result is an array in JSON format. 

    this.membersAdminService.addMember(jsonArray); // I should be subscribing here, not in the service. 
    addMemberForm.addEditMemberForm.reset(); 
    this.success(); 
    } 
関連する問題