Почему Sequelizer игнорирует мое имя пользователя - PullRequest
0 голосов
/ 19 марта 2019

У меня есть проект NestJS, который я настроил, и пытаюсь использовать Sequelizer для доступа к моей базе данных.В настоящее время у меня есть поставщик базы данных и модуль, настроенный для глобального использования (модуль внедряется в мой app.module), который настроен следующим образом:

database.module.ts:

import {Global, Module } from '@nestjs/common';
import { databaseProvider } from './database.provider'

@Global()
@Module({
 providers: [databaseProvider],
 exports: [databaseProvider]
})
export class DatabaseModule{}

database.provider.ts:

import {Sequelize } from 'sequelize-typescript';

export const databaseProvider = {
  provide: 'SequelizeInstance',
  useFactory: async () => {
    const config = {
      username: process.env.DB_USERNAME,
      password: process.env.DB_PASSWORD,
      database: process.env.DB_DATABASE,
      host: process.env.DB_HOST,
      port: Number(process.env.DB_PORT),
      logging: false,
      dialect: 'mssql',
      force: false,
      timezone: '-07:00'
    };

    const sequelize = new Sequelize(config);
    return sequelize;
  }
};

Мой модуль для вызова кода использует модуль и службу, которые настроены следующим образом:

db.module.ts:

import { Module } from '@nestjs/common';
import { DBService } from './db.service';
import { DBController } from './db.controller'

@Module({
  controllers: [DBController],
  providers: [DBService],
  exports: [DBService]
})
export class DBModule {}

db.service.ts:

import { Inject, Injectable } from '@nestjs/common';

@Injectable()
export class DBService {
  constructor(
    @Inject('SequelizeInstance') private readonly sequelizeInstance
  ) {}

  public async getRegions(): Promise<any> {
    return this.sequelizeInstance.query('EXEC pr_region_lst')
    .then(data => data)
    .catch(error => console.log(error));
  }
}

Проблема, с которой я сталкиваюсь, заключается в том, что сиквелизер продолжает выдавать ошибку, что для пользователя '' не удалось войти в систему ''.Я подключил отладчик и смотрю код в db.service.ts.Когда я смотрю на sequelizeInstance, он показывает конфигурацию с именем пользователя из предоставленного мной файла конфигурации.Я не знаю, почему он не использует его в контексте БД.

1 Ответ

0 голосов
/ 19 марта 2019

Я решил свою проблему.Кажется, что «утомительный» пакет не был установлен в моем проекте.Пакет msssql однако был.Таким образом, очевидно, что он неправильно использовал драйвер для подключения к базе данных.Как только я добавил утомительно, соединение начало работать.

...