如何解决Loopback4 与 Mongodb 身份验证状态码 500 错误
我已经在 Loopback4 上挣扎了好几天……Lb3 容易多了…… 我的目标是验证除@get 路由之外的所有路由。
配置进行得很顺利,当我尝试获取路由时,我收到一条消息,表明路由已通过身份验证,因此我放置了authenticate.skip(),然后得到了 500 状态代码:
ResolutionError: 键 '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);
}
}
解决方法
我相信 LoopBack 使用数据源文件名来确定数据源的名称并将名称放在上下文中。例如,[name-in-kebab-case].datasource.ts
在上下文中将是 datasource.NameInCamelCase
。 MongoDsDataSource
是否放在 mongo-ds.datasource.ts
中?
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。