Я реализую службу SMS в приложении loopback4. У меня есть класс службы, у которого есть один метод, но когда я пытаюсь вызвать его в конечной точке контроллера, после внедрения зависимости и привязки службы к приложению я получаю сообщение об ошибке, в котором говорится, что это не функция, хотя машинописный текст запрашивает у меня 2 параметра, которые требуются, как я могу это исправить?
Это класс обслуживания
@bind({scope: BindingScope.TRANSIENT})
export class NexmoService {
constructor() {}
sendSMS(to: any, message: string){
nexmo.message.sendSms(from, to , message, {
type: 'unicode'
}, (err: any, responseData: any)=> {
if (err){
console.log(err);
} else {
if ( responseData.messages[0]['status'] === '0') {
console.log('Message sent successfully.');
} else {
console.log(`Message failed with error: ${responseData.messages[0]['error-text']}`)
}
}
})
}
}
Привязка к контексту приложения
import {NexmoService} from './services/nexmo.service'
export class SmsServiceApplication extends BootMixin(
ServiceMixin(RepositoryMixin(RestApplication)),
) {
constructor(options: ApplicationConfig = {}) {
super(options);
this.bind('service.sms').to(NexmoService);
Это контроллер в котором пользуюсь сервисом
import {NexmoService} from '../services/nexmo.service';
export class SmsController {
constructor(
@inject('service.sms')
public smsService: NexmoService,
) {}
@post('/sendSms', {
responses: {
'200': {
description: 'Send SMS',
content: {
'application/json': {
schema: {
type: 'object',
properties: {
to: {
type: 'string'
},
message: {
type: 'string'
}
},
},
},
},
},
},
})
async sendSMS(
@requestBody({
content: {
'application/json': {
schema: {
type: 'object',
properties: {
to: {
type: 'string'
},
message: {
type: 'string'
},
},
},
},
},
}) request: Request,
): Promise<object> {
let data: any = request;
this.smsService.sendSMS(data.to, data.message)
return {
to: data.to,
message: data.message
}
}
}
и ошибка
Unhandled error in POST /sendSms: 500 TypeError: this.smsService.foo is not a function
at SmsController.sendSMS (/Users/Sergio/smsService/sms-service/src/controllers/sms.controller.ts:63:21)
at invokeTargetMethod (/Users/Sergio/smsService/sms-service/node_modules/@loopback/context/src/invocation.ts:255:47)
at /Users/Sergio/smsService/sms-service/node_modules/@loopback/context/src/invocation.ts:232:12
at Object.transformValueOrPromise (/Users/Sergio/smsService/sms-service/node_modules/@loopback/context/src/value-promise.ts:298:12)
at invokeTargetMethodWithInjection (/Users/Sergio/smsService/sms-service/node_modules/@loopback/context/src/invocation.ts:227:10)
at InterceptedInvocationContext.invokeTargetMethod (/Users/Sergio/smsService/sms-service/node_modules/@loopback/context/src/invocation.ts:118:14)
at targetMethodInvoker (/Users/Sergio/smsService/sms-service/node_modules/@loopback/context/src/interceptor.ts:349:23)
at /Users/Sergio/smsService/sms-service/node_modules/@loopback/context/src/interceptor-chain.ts:218:14
at Object.transformValueOrPromise (/Users/Sergio/smsService/sms-service/node_modules/@loopback/context/src/value-promise.ts:298:12)
at GenericInterceptorChain.invokeNextInterceptor (/Users/Sergio/smsService/sms-service/node_modules/@loopback/context/src/interceptor-chain.ts:213:12)
at GenericInterceptorChain.next (/Users/Sergio/smsService/sms-service/node_modules/@loopback/context/src/interceptor-chain.ts:201:17)
at GenericInterceptorChain.invokeInterceptors (/Users/Sergio/smsService/sms-service/node_modules/@loopback/context/src/interceptor-chain.ts:178:17)
at Object.invokeInterceptors (/Users/Sergio/smsService/sms-service/node_modules/@loopback/context/src/interceptor-chain.ts:250:16)
at /Users/Sergio/smsService/sms-service/node_modules/@loopback/context/src/interceptor.ts:351:14
at tryCatchFinally (/Users/Sergio/smsService/sms-service/node_modules/@loopback/context/src/value-promise.ts:222:14)
at Object.tryWithFinally (/Users/Sergio/smsService/sms-service/node_modules/@loopback/context/src/value-promise.ts:197:10)