我在启动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 {}
字符串
这里是我的用户模块和他们的模型,分别:
Users.module:
@Module({
controllers: [UsersController],
providers: [UsersService],
imports: [SequelizeModule.forFeature([User])],
})
export class UsersModule {}
型
Users.entity:
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,user,pass,host,port)。
到底是什么导致了这个问题?我有另一个应用程序与确切的配置,它的工作刚刚好。
当我设置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并重新安装我的软件包。
1条答案
按热度按时间qojgxg4l1#
这里也有同样的问题。我将autoLoadModels设置为false,它对我有效
所以结果是你不能同时拥有两个:imports:[SequelizeModule.forFeature([User])]和autoLoadModels:true
至少我的情况是这样的