2017-05-11 3 views
2

Ich verwende Pg-Versprechen, um mit NodeJS und Postgres zu arbeiten, aber wenn ich versuche, meine User Tabelle abzufragen, ruft es den SuperUser ab. Ich denke, es hängt damit zusammen, dass ich noch kein Schema gesetzt habe, also sucht der Code nach dem Standard 1. Wie kann ich das Schema auf den Code setzen? diesepg-prospect Set Schema NodeJs

Ich habe versucht:

var express = require('express'); 
var app = express(); 
const PORT = 8080; 

var pgp = require('pg-promise')(/*options*/) 
var db = pgp('postgres://postgres:[email protected]:5432/appname') 

app.listen(PORT,function() { 
    console.log("listening to port: " + PORT); 
}) 

db.any('SELECT * FROM User') 
    .then(function(data) { 
     console.log(data); 
    }) 
    .catch(function(error) { 
     console.log(error); 
    }); 
+1

Das Standardschema ist 'public' und Sie müssen es nicht festlegen. Daher nicht sicher, welches Problem Sie haben. Wenn Ihre Tabelle jedoch groß geschrieben wird, verwenden Sie stattdessen "Benutzer". Versuchen Sie, Ihre Frage zu überarbeiten. Außerdem gibt es keinen Punkt, der "[true]" in die Abfrage eingibt, die keine Parameter erwartet. –

+0

@ vitaly-t Ich bin mit dem gleichen Problem konfrontiert: Ich verbinde korrekt mit einer Datenbank, ich kann jede andere Tabelle als Benutzer abfragen und ich bekomme die erwarteten Antworten. Aber wenn ich die Benutzertabelle abfrage, bekomme ich den Benutzer, mit dem ich mich bei der Datenbank anmelde. Irgendein Rat? (Der Kapitalisierungsvorschlag funktioniert nicht) – Cristina

+0

@Antonio Costa Hilfreiche Kollegin gab mir einen Tipp, hier für den Fall, dass Sie es noch brauchen: Surround-Benutzer mit Anführungszeichen (SELECT * FROM "Benutzer"), sonst macht SQL falsche Annahmen. – Cristina

Antwort

0

Ihr Problem ist nicht das Schema, es ist der Name der Tabelle.

User (Groß-/Kleinschreibung nicht beachten) ist eine reservierte Referenz auf den aktuell angemeldeten Datenbankbenutzer.

Das Beste ist nicht, eine Tabelle mit einem solchen Namen zu verwenden, oder plurified verwenden - Users, dann werden Sie kein Problem haben.

Aber wenn Sie die Tabelle mit dem Namen verwenden müssen User dann werden Sie immer es in doppelte Anführungszeichen setzen müssen - "Users" (case-sensitive), so dass der Server kann den Unterschied erkennen.