Loopback4 с ошибкой кода статуса аутентификации Mongodb 500

#mongodb #loopback4

#mongodb #loopback4

Вопрос:

я уже несколько дней борюсь с Loopback4…Lb3 был намного проще… моя цель — аутентифицировать все мои маршруты, кроме @get route .

настройка прошла хорошо, и когда я попытался получить маршрут, я получил сообщение о том, что маршрут аутентифицирован, поэтому я поставил authenticate.skip(), а затем получил код состояния 500:

Ошибка разрешения: ключ ‘DataSources.mongoDS’ не привязан ни к какому значению в контексте

Вероятно, это простое решение, но я не могу его найти…

мой код:

я импортировал компоненты в application.ts

 this.component(AuthenticationComponent)
this.component(JWTAuthenticationComponent)
this.dataSource(MongoDsDataSource, UserServiceBindings.DATASOURCE_NAME)
this.bind(UserServiceBindings.USER_SERVICE).toClass(MyUserService);
 

это мой код источника данных:

 const config = {
  name: 'mongoDS',
  connector: 'mongodb',
  url: '',
  host: 'localhost',
  port: 27017,
  user: '',
  password: '',
  database: 'ropesdb',
  useNewUrlParser: true
};


@lifeCycleObserver('datasource')
export class MongoDsDataSource extends juggler.DataSource
  implements LifeCycleObserver {
  static dataSourceName = 'mongoDS';
  static readonly defaultConfig = config;

  constructor(
    @inject('dataSources.config.mongoDS', {optional: true})
    dsConfig: object = config,
  ) {
    super(dsConfig);
  }
}

 

и это мой код репозитория:

 export class RopeRepository extends DefaultCrudRepository<
  Rope,
  typeof Rope.prototype.id,
  RopeRelations
> {
  constructor(
    @inject('dataSources.mongoDS') dataSource: MongoDsDataSource,
  ) {
    super(Rope, dataSource);
  }
}
 

Ответ №1:

Я полагаю, что LoopBack использует имя файла источника данных для определения имени источника данных и размещения имени в контексте. Например, [name-in-kebab-case].datasource.ts будет datasource.NameInCamelCase в контексте. MongoDsDataSource Помещается в mongo-ds.datasource.ts ?