IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

React Discussion :

Connexion base de données - récupérer les messages d'erreur


Sujet :

React

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    488
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 488
    Par défaut Connexion base de données - récupérer les messages d'erreur
    Bonjour,

    J'ai une appli React qui fait des requêtes sur une base de données Postgres
    Dans mon code, je lance les requêtes avec du code genre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    fetch(`monurlderequete`)
        .then(response => {
          if (response.ok) {
            console.log('requête OK');
          }
          else {
            console.log(response);
          }
        })
    La réponse est de la forme :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Response { type: "cors", url: "monurlderequete", redirected: false, status: 500, ok: false, statusText: "Internal Server Error", headers: Headers(2), body: ReadableStream, bodyUsed: false }
    Mais on ne peut pas savoir quelle est l'erreur exactement.
    Si je regarde le log du backend, il y a beaucoup plus d'infos :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
     
    error: la valeur d'une clé dupliquée rompt la contrainte unique « secteur_nom_key »
        at Parser.parseErrorMessage (D:\mypath\node-postgres\node_modules\pg-protocol\dist\parser.js:283:98)
        at Parser.handlePacket (D:\mypath\node-postgres\node_modules\pg-protocol\dist\parser.js:122:29)
        at Parser.parse (D:\mypath\node-postgres\node_modules\pg-protocol\dist\parser.js:35:38)
        at Socket.<anonymous> (D:\mypath\node-postgres\node_modules\pg-protocol\dist\index.js:11:42)
        at Socket.emit (node:events:520:28)
        at addChunk (node:internal/streams/readable:559:12)
        at readableAddChunkPushByteMode (node:internal/streams/readable:510:3)
        at Readable.push (node:internal/streams/readable:390:5)
        at TCP.onStreamRead (node:internal/stream_base_commons:191:23) {
      length: 218,
      severity: 'ERREUR',
      code: '23505',
      detail: 'La clé « (nom)=(BZH) » existe déjà.',
      hint: undefined,
      position: undefined,
      internalPosition: undefined,
      internalQuery: undefined,
      where: undefined,
      schema: 'fcu',
      table: 'secteur',
      column: undefined,
      dataType: undefined,
      constraint: 'secteur_nom_key',
      file: 'nbtinsert.c',
      line: '666',
      routine: '_bt_check_unique'
    }
    D'où ma question : est ce qu'il y a un moyen de ramener les messages du backend dans la réponse renvoyée, pour afficher un message d'erreur dans une boite de dialogue, qui puisse expliquer pourquoi la requête n'a pas marché (dans l'exemple ici duplication de clé)

    Merci,
    Nico

  2. #2
    Expert confirmé
    Avatar de mathieu
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    10 606
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 10 606
    Par défaut
    en cas d'erreur 500, vous pouvez quand même lire le corps de la réponse http, dans response["body"].
    donc si vous retournez des informations côté serveur, vous pourrez les récupérer dans votre code javascript.

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    488
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 488
    Par défaut
    Dans le body de ma réponse, je n'ai que ça:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    Response { type: "cors", url: "monurl", redirected: false, status: 500, ok: false, statusText: "Internal Server Error", headers: Headers(2), body: ReadableStream, bodyUsed: false }body: ReadableStream { locked: false }
    ​​locked: false
    ​​<prototype>: ReadableStreamPrototype { cancel: cancel(), getReader: getReader(), pipeThrough: pipeThrough(), … }bodyUsed: falseheaders: Headers { "content-length""2", "content-type""application/json; charset=utf-8" }ok: falseredirected: falsestatus: 500statusText: "Internal Server Error"type: "cors"
    .....
    Mais il y a une variable bodyUsed: false, ça veut dire qu'il ne renvoie pas le body ?

    Est-ce qu'il y a quelquechose à paramétrer côté serveur pour qu'il renvoie les infos ?

    Nico

  4. #4
    Expert confirmé
    Avatar de mathieu
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    10 606
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 10 606
    Par défaut
    affichez ce qu'il y a dans response["body"].

    regardez aussi l'url directement dans votre navigateur et vous verrez le résultat directement.

  5. #5
    Membre éclairé
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    488
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 488
    Par défaut
    response["body"] :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    ReadableStream { locked: false }locked: false
    ​<prototype>: ReadableStreamPrototype { cancel: cancel(), getReader: getReader(), pipeThrough: pipeThrough(), … }
    ​​cancel: function cancel()
    ​​constructor: function ReadableStream()
    ​​getReader: function getReader()
    ​​locked: 
    ​​pipeThrough: function pipeThrough()
    ​​pipeTo: function pipeTo()
    ​​tee: function tee()
    ​​values: function values()
    ​​Symbol(Symbol.toStringTag): "ReadableStream"
    ​​Symbol(Symbol.asyncIterator): function values()
    ​​<get locked()>: function locked()
    ​​<prototype>: Object {}
    Si je lance directement mon url dans le navigateur :

    NicoNom : aa.jpg
Affichages : 21
Taille : 14,8 Ko

  6. #6
    Expert confirmé
    Avatar de mathieu
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    10 606
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 10 606
    Par défaut
    ah oui ce n'est pas direct, il faut passer par une autre promesse.
    https://developer.mozilla.org/fr/docs/Web/API/Response

    donc votre code devrait être quelque chose de ce genre :
    Code javascript : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    fetch(`monurlderequete`)
    	.then(response => {
    		if (response.ok) {
    			console.log('requête OK');
    		} else {
     
    			response.text()
    				.then(r => console.log(r))
    			;
     
    		}
    	})
    ;

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Probleme Google GWT connexion base de donne
    Par r0nsync dans le forum Webdesign & Ergonomie
    Réponses: 6
    Dernier message: 26/09/2008, 18h05
  2. Probleme Google GWT connexion base de donne
    Par dominou73 dans le forum Webdesign & Ergonomie
    Réponses: 1
    Dernier message: 10/07/2007, 15h49
  3. creer connexion base de donné avec dbedit eclipse
    Par youcef81 dans le forum Eclipse Java
    Réponses: 1
    Dernier message: 22/07/2006, 17h37
  4. [Tomcat][Oracle] connexion base de donnes debutant....
    Par yogz dans le forum Tomcat et TomEE
    Réponses: 8
    Dernier message: 16/07/2004, 13h32
  5. connexion base de donné
    Par saidi dans le forum MFC
    Réponses: 3
    Dernier message: 07/08/2002, 22h22

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo