【发布时间】:2021-10-08 07:48:30
【问题描述】:
我是第一次尝试 NestJS。
问题很简单,当我不在控制器中使用 async await 时,我可以在没有 await 的情况下返回数据,因为存储库类方法中使用了 async/await
@Get('/:id')
getMessage(@Param('id') id: string) {
const messageId = id;
// works just fine ????
const message = this.messagesService.findOne(messageId);
return message;
}
但是当我使用 NEST 中的 NotFoundException 来确保我是否找到了我应该返回的数据时,我不得不使用 async/await,因为没有它,它认为message 始终存在。我假设这是一个承诺。
@Get('/:id')
async getMessage(@Param('id') id: string) {
const messageId = id;
// ???? await
const message = await this.messagesService.findOne(messageId);
if (!message) {
throw new NotFoundException('Message with ID not found');
}
return message;
}
如果我不使用 await,它不会抛出异常。
问题是,为什么/如何在不使用 await 的情况下在第一个示例中工作
【问题讨论】:
-
findOne在做什么?它是如何返回结果的? -
是返回结果对象
-
返回结果是异步还是同步、承诺还是简单对象还是数组?问题中缺少这些信息。
-
请添加findOne函数的实现。
-
在你的第一个例子中只是控制台
message,它会清除一切。
标签: node.js typescript async-await nestjs