Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/postgresql/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js 节点Postgres SequelizeConnectionError:用户的密码身份验证失败_Node.js_Postgresql_Sequelize.js - Fatal编程技术网

Node.js 节点Postgres SequelizeConnectionError:用户的密码身份验证失败

Node.js 节点Postgres SequelizeConnectionError:用户的密码身份验证失败,node.js,postgresql,sequelize.js,Node.js,Postgresql,Sequelize.js,我正在开发一个带有node和sequelize的后端应用程序。我的数据库来自postgresql 启动应用程序时,数据库连接工作正常,但当它尝试与数据库通信以进行读取或更新时,由于连接错误而失败: 用户“wushin”的密码身份验证失败 对我来说似乎真的很奇怪,因为数据库连接已经完成,并且密码已经过验证。你们知道发生了什么吗?也许pg模块有问题,但我尝试了不同的版本 版本 节点:10.17.0 续集:5.21.3 博士后:10.11 pg模块:7.17.1 ->此代码工作正常: const se

我正在开发一个带有node和sequelize的后端应用程序。我的数据库来自postgresql

启动应用程序时,数据库连接工作正常,但当它尝试与数据库通信以进行读取或更新时,由于连接错误而失败: 用户“wushin”的密码身份验证失败

对我来说似乎真的很奇怪,因为数据库连接已经完成,并且密码已经过验证。你们知道发生了什么吗?也许pg模块有问题,但我尝试了不同的版本

版本 节点:10.17.0 续集:5.21.3 博士后:10.11 pg模块:7.17.1

->此代码工作正常:

const sequelize = new Sequelize(process.env.DATABASE_DEV_URL)

sequelize
  .authenticate()
  .then(() => {
    console.log('Connection has been established successfully.\n')
  })
  .catch(err => {
    console.error('Unable to connect to the database:', err)
  })
->但这一承诺因SequelizeConnectionError而失败:

models.Question.findAll()
    .then(data => {
      console.log('-> Succeeded data fetching\n')
      console.log(data)
    })
    .catch(err => {
      console.log('-> Failed data fetching\n')
      console.log('Error', err)
    })
日志:

yarn run v1.19.2
$ node index.js
Example app listening on port 4000 or something!
Executing (default): SELECT 1+1 AS result
Connection has been established successfully.

- Trying to fetch data:
-> Failed data fetching
Error:
 { SequelizeConnectionError: password authentication failed for user "wushin"
    at connection.connect.err (/home/wushin/Projects/GuessGame/theguessgame-api/node_modules/sequelize/lib/dialects/postgres/connection-manager.js:182:24)
    at Connection.connectingErrorHandler (/home/wushin/Projects/GuessGame/theguessgame-api/node_modules/pg/lib/client.js:194:14)
    at Connection.emit (events.js:198:13)
    at Socket.<anonymous> (/home/wushin/Projects/GuessGame/theguessgame-api/node_modules/pg/lib/connection.js:128:12)
    at Socket.emit (events.js:198:13)
    at addChunk (_stream_readable.js:287:12)
    at readableAddChunk (_stream_readable.js:268:11)
    at Socket.Readable.push (_stream_readable.js:223:10)
    at TCP.onStreamRead [as onread] (internal/stream_base_commons.js:94:17)
  name: 'SequelizeConnectionError'
纱线运行v1.19.2
$node index.js
示例应用程序在端口4000或其他位置侦听!
正在执行(默认):选择1+1作为结果
已成功建立连接。
-正在尝试获取数据:
->无法获取数据
错误:
{SequelizeConnectionError:用户“wushin”的密码身份验证失败
在connection.connect.err(/home/wushin/Projects/GuessGame/theguessgameapi/node_modules/sequelize/lib/dialogs/postgres/connection manager.js:182:24)
位于Connection.connectingErrorHandler(/home/wushin/Projects/GuessGame/theguessgame api/node_modules/pg/lib/client.js:194:14)
在Connection.emit(events.js:198:13)
在套接字上。(/home/wushin/Projects/GuessGame/theguessgameapi/node_modules/pg/lib/connection.js:128:12)
在Socket.emit(events.js:198:13)
在addChunk(_stream_readable.js:287:12)
在readableAddChunk(_stream_readable.js:268:11)
在Socket.Readable.push(_stream_Readable.js:223:10)
在TCP.onStreamRead[as onread](internal/stream_base_commons.js:94:17)
名称:“SequelizeConnectionError”

您似乎没有将任何配置传递给
Sequelize
,而是传递给主机。最低配置是主机、端口、数据库名、方言用户名和密码

从文档中:


我终于解决了这个问题。问题是,对于sequelize,需要模型调用index.js,该index.js应该使用sequelize创建的配置存储库为您进行sequelize连接

我与sequelize的连接运行得很好,但是通过RequiredModels启动的连接在我的数据库中有一些不好的信息

因此,我无法使用导入的模型获取数据库上的数据

我插入了良好的配置信息:

require('dotenv').config()

module.exports = {
  development: {
    url: process.env.DATABASE_URL,
    dialect: 'postgres',
  },
  test: {
    url: process.env.DATABASE_TEST_URL,
    dialect: 'postgres',
  },
  production: {
    url: process.env.DATABASE_PROD_URL,
    dialect: 'postgres',
  },
}
完全删除了我自己写的那句话:

const sequelize = new Sequelize(process.env.DATABASE_DEV_URL)
现在是models/index.js通过以下方式连接到数据库:

const sequelize = new Sequelize(process.env.DATABASE_URL)

sequelize
  .authenticate()
  .then(() => {
    console.log('Connection has been established successfully.\n')
  })
  .catch(err => {
    console.error('Unable to connect to the database:', err)
  })

你能显示你的数据库地址吗?只需隐藏你的密码…同时把你的模型和你建立连接的sequelize实例关联起来
const sequelize = new Sequelize(process.env.DATABASE_URL)

sequelize
  .authenticate()
  .then(() => {
    console.log('Connection has been established successfully.\n')
  })
  .catch(err => {
    console.error('Unable to connect to the database:', err)
  })