我正在尝试建立一个将graphql与postgresql数据库一起使用的react应用。现在,我只是想为我在本地托管的现有postgresql数据库设置pg适配器。运行node pgAdaptor.js
时,我得到一个被拒绝的承诺,说该数据库不存在,但是它说不存在的名称是用户名,而不是正确的数据库名称,即“过滤器”。
我想知道什么可能导致节点尝试使用用户名作为数据库名?
我正在使用dotenv节点包将db属性读入process.env,然后使用它们正确配置服务器,但它仍尝试连接到相同的用户名。即使当我更改.env文件中的配置时。
pgAdaptor.js:
require ('dotenv').config ();
const pgPromise = require ('pg-promise');
const pgp = pgPromise ({}); // Empty object means no additional config required
const config = {
host: process.env.POSTGRES_HOST,
port: process.env.POSTGRES_PORT,
database: process.env.POSTGRES_DB,
user: process.env.POSTGRES_USER,
password: process.env.POSTGRES_PASSWORD,
};
const db = pgp (config);
exports.db = db;
db.one ('select * from users').then (res => {
console.log (res);
});
db.env:
POSTGRES_HOST=localhost
POSTGRES_PORT=5432
POSTGRES_DB=filter
POSTGRES_USER=morbidmerve
POSTGRES_PASSWORD=
错误:
(node:2449) UnhandledPromiseRejectionWarning: error: database "morbidmerve" does not exist
at Connection.parseE (/Users/morbidmerve/dev/test/node_modules/pg/lib/connection.js:601:11)
at Connection.parseMessage (/Users/morbidmerve/dev/test/node_modules/pg/lib/connection.js:398:19)
at Socket.<anonymous> (/Users/morbidmerve/dev/test/node_modules/pg/lib/connection.js:120:22)
at Socket.emit (events.js:197:13)
at addChunk (_stream_readable.js:288:12)
at readableAddChunk (_stream_readable.js:269:11)
at Socket.Readable.push (_stream_readable.js:224:10)
at TCP.onStreamRead [as onread] (internal/stream_base_commons.js:145:17)
(node:2449) UnhandledPromiseRejectionWarning: Unhandled promise rejection. This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). (rejection id: 2)
(node:2449) [DEP0018] DeprecationWarning: Unhandled promise rejections are deprecated. In the future, promise rejections that are not handled will terminate the Node.js process with a non-zero exit code.
当我测试pgAdaptor.js功能时,我只需运行
node pgAdaptor.js
我可以确认数据库filter
存在并且在每个表上至少包含一条记录。
这应该可以根据https://blog.harveydelaney.com/setting-up-graphql-express-and-postgresql/上的教程进行操作。
非常感谢您的帮助!
答案 0 :(得分:0)
感谢vitaly-t对我的问题的评论,我发现了问题:
dotenv软件包无法将配置读入process.env,因为该文件未显式命名为“ .env”,而仅具有.env扩展名。即我的是db.env
,显然不是有效的配置文件名。因此,在将文件名更改为字面上的.env
之后,dotenv软件包会完美地读取配置。
堆栈溢出也很棒!