NodeJS で pg-promise を動作させて、PostgreSQL データベースに接続できるようにしようとしています。node と postgre の両方が、Ubuntu を実行している codeanywhere ノード ボックスで実行されています。
関連するコードは次のとおりです。
var pgp = require('pg-promise')();
var bot = new TelegramBot(token, { polling: true });
var db = pgp({
host: 'localhost',
port: 5432,
database: 'users',
user: 'postgres',
password: '(pass here)'
});
db.any("select * from users")
.then(function (data) {
console.log(data);
})
.catch(function (error) {
console.log(error);
});
実行node bot.js
すると、次のように出力されます。
{ [error: relation "users" does not exist]
name: 'error',
length: 96,
severity: 'ERROR',
code: '42P01',
detail: undefined,
hint: undefined,
position: '15',
internalPosition: undefined,
internalQuery: undefined,
where: undefined,
schema: undefined,
table: undefined,
column: undefined,
dataType: undefined,
constraint: undefined,
file: 'parse_relation.c',
line: '984',
routine: 'parserOpenTable' }
そして、次をに出力します/var/log/postgresql/postgresql-9.3-main.log
:
2016-09-29 23:09:29 EDT ERROR: relation "users" does not exist at character 15
私は何を間違えましたか?次のコードが機能するため、db.any() を使用する必要があると思います。
//db.any("select * from users")
db.connect()
.then(function (data) {
console.log(data);
})
.catch(function (error) {
console.log(error);
});
出力は、オブジェクトとほぼ同じように見える何かの戻り値ですが、それはdb
私が必要としているものではありません...
問題として大文字化について言及している他のスタックオーバーフローの質問を見てきました。具体的には、postgresql は入力を二重引用符なしですべて小文字にすると言われています。そのような関連性の概念を払拭するには、次のようにします。
postgres=# \dt
List of relations
Schema | Name | Type | Owner
--------+-------+-------+----------
public | users | table | postgres
(1 row)
関係は確かに存在します。
私は何が欠けていますか?