尝试从节点应用程序连接时发生PostgreSQL错误

时间:2018-12-30 13:23:01

标签: node.js postgresql kubernetes sequelize.js

FATAL: no PostgreSQL user name specified in startup packet

尝试通过以下操作连接到kubernetes集群中的postgreSQL实例时的日志:

const { POSTGRES_DATABASE, POSTGRES_USERNAME, POSTGRES_PASSWORD } = require('../config/config');

const Sequelize = require('sequelize');
    const conn = new Sequelize(POSTGRES_DATABASE, {
        username: POSTGRES_USERNAME,
        password: POSTGRES_PASSWORD
    });

config / config.js

    const config = {
        POSTGRES_DATABASE: 'postgres://postgres/postgresdb',
        POSTGRES_USERNAME: 'postgresadmin',
        POSTGRES_PASSWORD: 'admin123',
        SERVER_PORT: '5000'
    }

module.exports = config;

我在nodeJS中使用SequelizeJS。 http://docs.sequelizejs.com/

由于在postgreSQL日志中看到了尝试,因此请求似乎可以正常连接。但是出了些问题,我想知道postgres或节点服务中的权限是否有问题。

赞赏一些帮助或想法

1 个答案:

答案 0 :(得分:3)

根据您链接的Sequelize文档,用于创建新连接的参数是db,用户名和密码。您的代码执行db,然后执行一个具有用户名和密码键的对象。该对象不正确,导致找不到用户名或密码。尝试以下方法:

const { POSTGRES_DATABASE, POSTGRES_USERNAME, POSTGRES_PASSWORD } = require('../config/config');

const Sequelize = require('sequelize');
const conn = new Sequelize(POSTGRES_DATABASE, POSTGRES_USERNAME, POSTGRES_PASSWORD);

Sequelize 确实允许最后一个参数是一个可选的options对象,但是用户名和密码不应在其中。

文档的此页面令我感到困惑。

http://docs.sequelizejs.com/manual/installation/usage.html

我相信它的意思是您要么需要定义对象中的所有内容,要么将数据库,用户名和密码作为单独的参数,但是我看不到它在参数和用户名/密码中支持数据库物体。

似乎这也应该工作:

const conn = new Sequelize({
  database: POSTGRES_DATABASE,
  username: POSTGRES_USERNAME,
  password: POSTGRES_PASSWORD
});