Запуск метода после возврата ответа на запрос POST - PullRequest
1 голос
/ 20 января 2020

Я довольно новичок в JS и использую Nest JS с mon go для разработки API бэкэнда. У меня есть базовые c операции CRUD. Я хочу иметь возможность создавать документ, возвращать его пользователю и запускать другой метод, не влияя на пользователя.

  @Post()
  async create(@Body() body: Dto, @Headers('id') id: string) {   
    body.id = id;    
    const item = await this.service.create(body);
    return item;

  // Now, I want to call another method async to trace history changes 
  }

Ответы [ 3 ]

0 голосов
/ 26 января 2020

Если вы используете TypeORM, чистый способ - использовать прослушиватель сущностей или подписчика. Это позволяет запускать код "afterInsert": https://github.com/typeorm/typeorm/blob/master/docs/listeners-and-subscribers.md

0 голосов
/ 28 января 2020

Вы можете добавить вызов к другому asyn c методу

@Post()
async create(@Body() body: Dto, @Headers('id') id: string) {   
  body.id = id;    
  const item = await this.service.create(body);
  this.service.anotherAsyncMethod(); 

  return item;
}
0 голосов
/ 20 января 2020

Существует два варианта решения этой опции

  • Запустить и забыть - вызовите операцию asyn c, не ожидая ее, а затем верните ее пользователю. таким образом, ваш вызов будет принят, но узел не будет ждать ответа.

  • Второй подход заключается в параллельном выполнении действий, чтобы сократить время, необходимое для обработки двух запросов. Вы можете использовать Promise.all и делать две вещи параллельно. Это рекомендуемый способ. Смотрите пример здесь - https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise/all

...