2013-02-27 1 views
5

console.log gibt es so,Welche Art von Objekt ist Node-Postgres Fehler? Warum behandeln console.log und JSON.stringify des Knotens das anders?

{ [error: syntax error at or near "step"] 
    length: 86, 
    name: 'error', 
    severity: 'ERROR', 
    code: '42601', 
    detail: undefined, 
    hint: undefined, 
    position: '62', 
    internalPosition: undefined, 
    internalQuery: undefined, 
    where: undefined, 
    file: 'scan.l', 
    line: '1001', 
    routine: 'scanner_yyerror' } 

aber JSON.stringify sieht nicht die Erzählung Teil eines Fehlers

{ "Länge": 86, "name": "Fehler" , "Schweregrad": "FEHLER", "Code": "42601", "Position": "62", "Datei": "scan.l", "Zeile": "1001", "Routine": "scanner_yyerror" }

ich kann nicht herausfinden, wie diese erhalten „Fehler: Spalte‚undefiniert‘existiert nicht“ Lesen wikies (https://github.com/brianc/node-postgres/wiki/Error-handling, http://nodejs.ru/doc/v0.4.x/stdio.html#console.log)

Der Code ist wie diese,

client.query(selstring, function(err, result) { 
    if(err){ 
    res.send(JSON.stringify(err)); 
    console.log(err); 
    }else{ 

dank

UPDATE: err.toString() zeigt error: syntax error at or near "step"

+0

Bitte poste den Inhalt von 'selstring' anhängt. – robertklep

+0

ich denke nicht, dass es wirklich wichtig ist, aber hier ist es: 'wählen Sie max (Datum) :: Zeichen variiert dt aus dem Kalender wo11 Schritt = 0 '. Meine Aufgabe ist es, die Fehlerbeschreibung zu bekommen. die Abfrage ist absichtlich falsch – fedd

+1

Oh, richtig Entschuldigung, ich missverstanden Ihre Frage :(Was '' '_err.toString()' Rückkehr? – robertklep

Antwort

5

Da die pg Fehler eine Unterklasse der Standard Js Fehler ist() obj und damit die Basisfehler "description" ist über err.message ...

console.log(new Error("hello world")); 
[Error: hello world] 
console.log(new Error("hello world").message); 
hello world 

Sie können die Standard-Error-Objekt Unterklasse für Ihre eigenen Fehler objs durch die Error.prototype

See Kevins Beitrag How do I create a custom Error in JavaScript?

-1

verwenden kann ich jetzt die gleiche Sache für eine lange Zeit zu verstehen, habe zu kämpfen.

Mit Blick auf die Ausgabe von JSON.stringify(err) scheint das Objekt ein Array als unbenanntes Attribut zu haben. Wie ist es überhaupt möglich, ein Objekt mit einem anonymen Attribut zu erstellen? Ich habe das schon eine ganze Weile durcheinander gebracht, aber ich konnte keine Möglichkeit finden, irgendein Objekt zu konstruieren, das eine ähnliche Struktur aus JSON.stringify erzeugen könnte.

Ich habe gefunden, dass err.message tatsächlich funktioniert, um auf die Zeichenfolge zuzugreifen, aber ich verstehe wirklich nicht warum, da "Nachricht" nicht als ein Attribut in der stringifizierten Version erscheint. Wenn "Nachricht" ein Attribut von err ist, warum wird es nicht in der Ausgabe von stringify angezeigt? Wenn es nicht ist, woher kommt es dann?

0

Die einfache Lösung besteht darin, einen Port-Parameter in Ihre Verbindung aufzunehmen, selbst wenn es sich um den Standard-Port handelt. Ich hatte genau das gleiche Problem. Ich habe über die Lösung von diesem github issue herausgefunden.

var pg_conn_conf = { 
    username: 'user', 
    pass: 'pass', 
    port: 5432, 
    host: 'localhost', 
    db: 'mydb' 
}; 

Es gibt auch eine andere stackoverflow answer, die die Error.prototype schlägt erstreckt, zum Glück müssen Sie nicht mit, dass in diesem Fall befassen. Aber es ist ein guter Trick zu wissen.