Typescript 按顺序使用存储库的自定义函数
我创建了一个自定义函数,需要在服务器的每个路由中执行 此函数需要在请求头中检索一个参数,并在数据库中检查该参数。(由存储库控制) 如何在我的职能范围内访问此存储库 我尝试了不同的可能性,但我无法实现结果:Typescript 按顺序使用存储库的自定义函数,typescript,repository,loopbackjs,Typescript,Repository,Loopbackjs,我创建了一个自定义函数,需要在服务器的每个路由中执行 此函数需要在请求头中检索一个参数,并在数据库中检查该参数。(由存储库控制) 如何在我的职能范围内访问此存储库 我尝试了不同的可能性,但我无法实现结果: 在函数内创建存储库(数据库似乎为空:() 尝试从控制器传递存储库(可以,但在序列文件中,我无法访问控制器或存储库:( 尝试在函数中包含控制器,但类似于2 我是环回和typescript的初学者,如您所见=)我想您正在寻找最近引入的拦截器,请参阅和 因为您希望为每个传入请求调用函数,所以可以使用
我是环回和typescript的初学者,如您所见=)我想您正在寻找最近引入的拦截器,请参阅和 因为您希望为每个传入请求调用函数,所以可以使用全局拦截器 如何在我的职能范围内访问此存储库 编写一个拦截器提供程序,它允许您利用基于
@inject
的依赖项注入来接收存储库。例如:
类MyRequestValidator实现提供程序{
建造师(
@存储库(TokenRepository)受保护的tokenRepo:TokenRepository,
@inject(RestBindings.Http.REQUEST)受保护的请求:请求,
) {}
值(){
返回this.intercept.bind(this);
}
异步截获(
invocationCtx:InvocationContext,
下一步:()=>value或promise,
) {
//分析此.request.headers[名称]中的参数
const token=this.request.headers['x-my-token'];
//调用this.tokenRepo方法查询数据库
const found=wait this.tokenRepo.findOne({where:{id:token}});
const isValid=!found.expired;
如果(!isValid){
//抛出new Error()以终止错误
抛出新的HttpErrors.BadRequest(“无效令牌”);
}
//调用next()继续处理请求
返回next();
}
}
我想您正在寻找最近推出的拦截器,请参阅和
因为您希望为每个传入请求调用函数,所以可以使用全局拦截器
如何在我的职能范围内访问此存储库
编写一个拦截器提供程序,它允许您利用基于@inject
的依赖项注入来接收存储库。例如:
类MyRequestValidator实现提供程序{
建造师(
@存储库(TokenRepository)受保护的tokenRepo:TokenRepository,
@inject(RestBindings.Http.REQUEST)受保护的请求:请求,
) {}
值(){
返回this.intercept.bind(this);
}
异步截获(
invocationCtx:InvocationContext,
下一步:()=>value或promise,
) {
//分析此.request.headers[名称]中的参数
const token=this.request.headers['x-my-token'];
//调用this.tokenRepo方法查询数据库
const found=wait this.tokenRepo.findOne({where:{id:token}});
const isValid=!found.expired;
如果(!isValid){
//抛出new Error()以终止错误
抛出新的HttpErrors.BadRequest(“无效令牌”);
}
//调用next()继续处理请求
返回next();
}
}
您尝试过中间产品吗?不确定它们在lb4中是如何提供的,但您是否尝试过Middleware?但不确定它们在lb4中如何可用