Loopback 4 - шаблон источника данных POST-запроса - PullRequest
1 голос
/ 15 февраля 2020

У меня проблема с объявлением операции POST в файле источника данных Loopback 4.

Мой шаблон выглядит следующим образом:

    {
      "template": {
        "method": "POST",
        "url": "https://reqres.in/api/login"
      },
      "functions": {
        "login": []
      }
    }

Мой сервисный интерфейс

  login(email: string, password: string): Promise<any>;

Мой контроллер

 @post('/loginTest')
  async testingLogin(
    @requestBody({
      content: {
        'application/json': {
          schema: getModelSchemaRef(TestModel, {
            title: 'Post',
          }),
        },
      },
    })
    testModel: TestModel, )
    : Promise<any> {   
     // TEST MODEL CONTAIN JSON OBJECT {email: "" , password: ""}
    console.log("Test Model Representation: ", testModel)
    try {
      var response = await this.loginService.login(testModel.email, testModel.password);

    } catch (error) {
      console.log("error", error)

    }
    console.log("Fake POST response", response)
    return response;
  };

Я использую этот поддельный API : https://reqres.in/api/login Я получаю следующую ошибку:

Test Model Representation:  { email: 'string', password: 'string' }
error Error: {"error":"Missing email or username"}
    at callback (D:\loginApp\node_modules\loopback-connector-rest\lib\rest-builder.js:541:21)
    at D:\loginApp\node_modules\loopback-datasource-juggler\lib\observer.js:269:22
    at doNotify (D:\loginApp\node_modules\loopback-datasource-juggler\lib\observer.js:157:49)
    at RestConnector.ObserverMixin._notifyBaseObservers (D:\loginApp\node_modules\loopback-datasource-juggler\lib\observer.js:180:5) {
  statusCode: 400,
  message: '{"error":"Missing email or username"}'
}
Fake POST response undefined

Похоже, мой адрес электронной почты и пароль не переданы? Спасибо за любую помощь.

1 Ответ

0 голосов
/ 20 февраля 2020

Функция login, которую вы определили в файле источника данных, должна соответствовать интерфейсу сервиса. Это означает, что это будет что-то вроде:

"functions": {
   "login": ["email", "password"]
}
...