Node.js 尝试从节点应用程序连接时出现PostgreSQL错误

Node.js 尝试从节点应用程序连接时出现PostgreSQL错误,node.js,postgresql,kubernetes,sequelize.js,Node.js,Postgresql,Kubernetes,Sequelize.js,尝试通过执行以下操作连接到kubernetes群集中的postgreSQL实例时,会记录其中的日志: FATAL: no PostgreSQL user name specified in startup packet config/config.js const { POSTGRES_DATABASE, POSTGRES_USERNAME, POSTGRES_PASSWORD } = require('../config/config'); const Sequelize = requir

尝试通过执行以下操作连接到kubernetes群集中的postgreSQL实例时,会记录其中的日志:

FATAL: no PostgreSQL user name specified in startup packet
config/config.js

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
    });
我正在nodeJS中使用SequelizeJS。

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


感谢您的帮助或想法根据您链接的Sequelize文档,创建新连接的参数是db、用户名、密码。您的代码使用db,然后使用用户名和密码键创建一个对象。此对象不正确,导致它找不到用户名或密码。请尝试以下方法:

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

module.exports = config;
Sequelize允许将可选选项对象作为最后一个参数,但用户名和密码不应包含在其中

这一页的文档让我感到困惑

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

这似乎也应该起作用:

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文档,创建新连接的参数是db、用户名和密码。您的代码使用db,然后使用用户名和密码键创建一个对象。此对象不正确,导致它找不到用户名或密码。请尝试以下方法:

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

module.exports = config;
Sequelize允许将可选选项对象作为最后一个参数,但用户名和密码不应包含在其中

这一页的文档让我感到困惑

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

这似乎也应该起作用:

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

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


POSTGRES\u USERNAME
是一个变量吗?它是在哪里定义的?我更新了first post@DoubleSharp,您正在为密码传递用户名-
密码:POSTGRES_username
此外,您使用的数据库与配置中的数据库不同。这似乎有点奇怪。我想我的观点是,要么使用config.js中的一个,要么从config.js中删除它。将它添加到config.js中而不使用它会让人困惑,并且会导致以后的更多困惑。
POSTGRES\u USERNAME
是一个变量吗?它是在哪里定义的?我更新了first post@DoubleSharp,您正在为密码传递用户名-
密码:POSTGRES_username
此外,您使用的数据库与配置中的数据库不同。这似乎有点奇怪。我想我的观点是,要么使用config.js中的一个,要么从config.js中删除它。将它添加到config.js中而不使用它会让人感到困惑,并且会在以后导致更多的困惑。谢谢,伙计,很好的捕获。现在我得到了一个错误:connect econnrefered127.0.0.1:5432,它不是我想要连接的本地主机,所以我想我需要在POSTGRES_数据库中只定义数据库名称,然后在options对象中的某个位置设置一个主机,然后你需要向options对象添加一个
主机
。我现在意识到我的最后一条注释是同时运行的。“主机”密钥是您需要指定的,以便它知道数据库的IP地址或域。看起来您还需要将方言设置为“postgres”。我不确定Sequelize是否知道Postgres默认在5432端口上运行。您可能还需要将其指定为“端口”选项。我目前正在使用方言:'postgres',主机:'postgres',但似乎它现在根本没有到达postgres服务。它说端口是基于方言的,所以不需要海关口岸;默认:默认节点是否直接在您的计算机上运行?如果您在Docker容器或虚拟机中运行它,您可能会遇到DNS无法从您的计算机共享到VM的问题。谢谢,伙计,很好的解决方法。现在我得到了一个错误:connect econnrefered127.0.0.1:5432,它不是我想要连接的本地主机,所以我想我需要在POSTGRES_数据库中只定义数据库名称,然后在options对象中的某个位置设置一个主机,然后你需要向options对象添加一个
主机
。我现在意识到我的最后一条注释是同时运行的。“主机”密钥是您需要指定的,以便它知道数据库的IP地址或域。看起来您还需要将方言设置为“postgres”。我不确定Sequelize是否知道Postgres默认在5432端口上运行。您可能还需要将其指定为“端口”选项。我目前正在使用方言:'postgres',主机:'postgres',但似乎它现在根本没有到达postgres服务。它说端口是基于方言的,所以不需要海关口岸;默认:默认节点是否直接在您的计算机上运行?如果您在Docker容器或虚拟机中运行它,则可能存在DNS无法从您的计算机共享到VM的问题。