错误 [SequelizeModule] 无法连接到数据库

问题描述 投票:0回答:1

启动 Nest 应用程序时,我一直遇到此错误:

[Nest] 53044  - 08/10/2023, 1:51:34 AM   ERROR [SequelizeModule] Unable to connect to the database. Retrying (1)...

这是我的app.module:

import { Module } from '@nestjs/common';
import { AppController } from './app.controller';
import { AppService } from './app.service';
import { UsersModule } from './modules/users/users.module';
import { SequelizeModule } from '@nestjs/sequelize';
import { Dialect } from 'sequelize';
import { ConfigModule } from '@nestjs/config';
import * as Joi from 'joi';

@Module({
  imports: [
    UsersModule,
    ConfigModule.forRoot({
      isGlobal: true,
      validationSchema: Joi.object({
        DATABASE_HOST: Joi.string().required(),
        DATABASE_PORT: Joi.number().required(),
        DATABASE_NAME: Joi.string().required(),
        DATABASE_USER: Joi.string().required(),
        DATABASE_PASS: Joi.string(),
        DATABASE_DIALECT: Joi.string().required(),
        APPS_PORT: Joi.number().required(),
        // SALT_ROUND: Joi.number().required(),
      }),
    }),
    SequelizeModule.forRoot({
      dialect: 'postgres' as Dialect,
      host: 'localhost',
      port: 5432,
      username: 'username',
      password: 'password',
      database: 'databaseName',
      autoLoadModels: true,
      synchronize: true,
      logging: true,
    }),
  ],
  controllers: [],
  providers: [],
})
export class AppModule {}


这是我的用户模块及其模型:

用户模块:

@Module({
  controllers: [UsersController],
  providers: [UsersService],
  imports: [SequelizeModule.forFeature([User])],
})
export class UsersModule {}

用户.实体:


import { Column, DataType, Model, Table } from 'sequelize-typescript';
@Table({
  timestamps: true,
})
export class User extends Model<User> {
  @Column({
    type: DataType.STRING,
    allowNull: false,
  })
  username: string;

  @Column({
    type: DataType.STRING,
    allowNull: false,
  })
  password: string;
}

我正在使用 Sequelize 和 Postgres,并且数据库已经创建。 我的数据库连接配置是正确的(dbName、用户、通行证、主机、端口)。

问题的真正原因是什么?我有另一个具有精确配置的应用程序,它运行得很好。

我设置

autoLoadModels: true
时出现错误。 当我将其设置为 false 时它就消失了,但当我实际尝试查询数据库时出现另一个错误:
ERROR [ExceptionsHandler] Model not initialized: Member "findAll" cannot be called. "User" needs to be added to a Sequelize instance.

因此,将其设置为 false 并不能真正解决问题,因为我的应用程序根本没有连接到数据库。

我尝试使用与我的其他工作应用程序相同的软件包版本。 我尝试使用

127.0.0.1
而不是
localhost
。 我尝试删除我的node_modules并重新安装我的软件包。

postgresql sequelize.js nestjs
1个回答
0
投票

这里也有同样的问题。我将 autoLoadModels 设置为 false,它对我有用

所以事实证明你不能两者兼得: 导入:[SequelizeModule.forFeature([User])], 和 自动加载模型:true

同时。至少就我而言是这样的。

© www.soinside.com 2019 - 2024. All rights reserved.