2017-05-11 7 views
2

私は、nodeJSとpostgresを扱うのにpg-promiseを使用していますが、私のUserテーブルを照会しようとすると、スーパーユーザーを取得します。私はスキーマがまだ設定されていないという事実に関連していると思うので、コードはデフォルトで1を検索します。どのようにしてコードにスキーマを設定できますか?pg-promise set schema NodeJs

私はこれを試してみました:

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

デフォルトのスキーマは 'public'であり、設定する必要はありません。したがって、あなたは何の問題があるのか​​分かりません。しかし、あなたのテーブルが大文字になっている場合は、代わりに '' User ''を使用してください。あなたの質問を修正してみてください。また、パラメータを必要としないクエリに '[true]'を渡すポイントはありません。 –

+0

@ vitaly-t私は同じ問題に直面しています:私はデータベースに正しく接続しています。ユーザー以外のテーブルを照会でき、予想通りの回答が得られます。しかし、私はユーザーテーブルを照会するとき、私はデータベースにログインするために使用するユーザーを取得します。何かアドバイス? (大文字の提案は機能しません) – Cristina

+0

@Antonio Costa有益な同僚がヒントをくれました。まだ必要な場合に備えて、ここに投稿してください:ユーザを引用符で囲みます(SELECT * FROM "user")。 – Cristina

答えて

0

あなたの問題は、それがテーブル名で、スキーマではありません。

User(大文字と小文字を区別しません)は、現在ログインしているデータベースユーザーの予約参照です。

このような名前のテーブルを使用しないことをお勧めします。または、plurified-Usersを使用することは問題ありません。

しかし、名前がUserのテーブルを使用する必要がある場合は、常にサーバを区別できるように二重引用符("Users")で入力する必要があります。