Demande d'aide : ERROR Error Code: 201 Message: Http failure during parsing for http://localhost:3000/createthemequestion

10 views
Skip to first unread message

tbecco

unread,
Jul 14, 2020, 9:37:45 AM7/14/20
to FrAngular - AngularJS en français
Bonjour

Cela fait quelques temps que je bloque sur le problème cité en objet et malgré toutes mes recherches je n'arrive pas à résoudre le problème (je dois préciser que je suis en phase d'apprentissage).
J'ai bien la page qui me permet de saisir les informations, et lorsque je clique sur le bouton "enregistrer", les données sont bien enregistrées dans la base de données (Postgres) par contre j'ai le message d'erreur cité ci dessus.

J'ai certainement du faire une erreur quelque part, mais je n'arrive pas à trouver où !

Par avance, merci pour vos conseils et vos pistes de réflexions.

create.component.ts
import { ComponentOnInit } from '@angular/core';
import { ThemequestionService } from '../themequestion.service';
import { FormBuilderFormGroup } from '@angular/forms';
import { Router } from '@angular/router';

@Component({
  selector: 'themequestioncreate',
  templateUrl: './create.component.html',
  styleUrls: ['./create.component.css']
})
export class CreateComponent implements OnInit {
  themequestionFormFormGroup;

  ngOnInit() {
      this.themequestionForm = this.fb.group({
        CodeThemeQuestion: [''],
        NomThemeQuestion: [''],
        DescriptionThemeQuestion: [''],   
    })
  }

  constructor(
    public fbFormBuilder,
    private routerRouter,
    public themequestionServiceThemequestionService
  ){ }
  submitForm() {
    this.themequestionService.create(this.themequestionForm.value).subscribe(res => {
      console.log('Thème question créé!')
      this.router.navigateByUrl('/backoffice/themequestion/')
    })
  }
}

create.component.html
<div>
    <div class="row mb-1">
        <div class="col-md-12 text-center text-primary">
          <h1 class="h1">Créer Thèmes des questions</h1>
          <br>
        </div>
    </div>

    <button type="button" class="btn btn-secondary btn-sm m-1" routerLink="/backoffice/themequestion">Retour</button>
    <form [formGroup]="themequestionForm" (ngSubmit)="submitForm()" novalidate>
        <div class="form-group">
            <label>Code</label>
            <input type="text" formControlName="CodeThemeQuestion" class="form-control" maxlength="10">
        </div>

        <div class="form-group">
            <label>Nom</label>
            <input type="text" formControlName="NomThemeQuestion" class="form-control" maxlength="60">
        </div>
        <div class="form-group">
            <label>Description</label>
            <textarea type="text" formControlName="DescriptionThemeQuestion" class="form-control" rows="5"></textarea>
        </div>
        <button type="submit" class="btn btn-primary btn-sm m-1">Enregistrer</button>
    </form>
</div>

themequestion.service.ts
import { Injectable } from '@angular/core';
import { HttpClientHttpHeaders } from "@angular/common/http";

import { throwError } from 'rxjs';
import { catchError } from 'rxjs/operators';
import { Observable } from 'rxjs';

import {Themequestionfrom '../../models/themequestion';

@Injectable({
  providedIn: 'root'
})
export class ThemequestionService {

  private apiServer = "http://localhost:3000";

  httpOptions = {
    headers: new HttpHeaders(
      {
        'Content-Type': 'application/json',
      }
    )
  };


  constructor(private httpClientHttpClient) { }

  create(themequestion:any): Observable<Themequestion> {
    return this.httpClient.post<Themequestion>(this.apiServer + '/createthemequestion'JSON.stringify(themequestion), this.httpOptions)
    .pipe(
      catchError(this.errorHandler)
    )
    
  } 
  errorHandler(error) {
    let errorMessage = '';
    if(error.error instanceof ErrorEvent) {
      // Get client-side error
      errorMessage = error.error.message;
    } else {
      // Get server-side error
      errorMessage = `Error Code: ${error.status}\nMessage: ${error.message}`;
    }
    console.log(errorMessage);
    return throwError(errorMessage);
 }
}

query.js (nodejs)
// POST - Créer un ThemeQuestion //
const createThemeQuestion = (requestresponse=> {
  const { CodeThemeQuestionNomThemeQuestionDescriptionThemeQuestion } = request.body

  pool.query('INSERT INTO "ThemeQuestion" ("CodeThemeQuestion", "NomThemeQuestion", "DescriptionThemeQuestion") VALUES ($1, $2, $3)', [CodeThemeQuestionNomThemeQuestionDescriptionThemeQuestion], (errorresults=> {
    if (error) {
      throw error
    }
    response.status(201).send(`ThemeQuestion créé`)
  })
}

index.js (nodejs)
const express = require('express')
const bodyParser = require('body-parser')
const app = express()
const db = require('./queries')
const port = 3000

app.use(function(reqresnext) {
  res.header("Access-Control-Allow-Origin""*");
  res.header("Access-Control-Allow-Headers""Origin, X-Requested-With, Content-Type, Accept");
  next();
});

app.use(bodyParser.json())
app.use(
  bodyParser.urlencoded({
    extended: true,
  })
)
app.get('/themequestions'db.getThemeQuestions)
app.get('/themequestion/:id'db.getThemeQuestionById)
app.post('/createthemequestion'db.createThemeQuestion)
app.put('/themequestion/:id'db.updateThemeQuestion)
app.delete('/themequestions/:id'db.deleteThemeQuestion)


Reply all
Reply to author
Forward
0 new messages