我对JS还是很陌生,并且将NestJS与mongo结合使用来开发后端api。我有一个基本的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
}
答案 0 :(得分:0)
有两种解决方法
着急而忘了-调用异步操作而不等待它,然后将其返回给用户。这样,您的电话将被接听,但节点将不等待响应来接听。
第二种方法是并行处理,以减少处理两个请求所需的时间。您可以使用Promise.all
并并行执行两项操作。这是推荐的方法。在此处查看示例-https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise/all
答案 1 :(得分:0)
如果您使用的是TypeORM,一种干净的方法是使用实体侦听器或订阅者。这使您可以运行代码“ afterInsert”:https://github.com/typeorm/typeorm/blob/master/docs/listeners-and-subscribers.md
答案 2 :(得分:0)
您可以将调用添加到另一个异步方法
@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;
}