启动 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并重新安装我的软件包。
这里也有同样的问题。我将 autoLoadModels 设置为 false,它对我有用
所以事实证明你不能两者兼得: 导入:[SequelizeModule.forFeature([User])], 和 自动加载模型:true
同时。至少就我而言是这样的。