#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
?