我建立了关联,因此一个类别有很多帖子,每个帖子都有很多评论:
Category
→Post
→Comment
拥有一个Category
的实例,如何获得全部comments
?
我已经尝试过了:
const posts = await category.getPosts()
const comments = await posts.map(post => post.getComments())
但是返回的comments
只是Promises
的数组:
[ Promise {
_bitField: 0,
_fulfillmentHandler0: undefined,
_rejectionHandler0: undefined,
_promise0: undefined,
_receiver0: undefined },
...
答案 0 :(得分:1)
如果await运算符后面的表达式的值不是Promise,则将其转换为解析的Promise。
这就是您的情况。 posts.map重新运行了一个不是promise的数组,因此await正在使用promise数组进行解析。
const posts = await category.getPosts()
const comments = await posts.map(post => post.getComments())
在以上逻辑中,posts.map返回一个数组,但未返回诺言。因此,要使其正常工作,您需要将该地图包装在Promise.all中。
const posts = await category.getPosts()
const comments = await Promise.all(posts.map(post => post.getComments()))
现在,当我们打印注释时,它将显示所有已解决的承诺的响应数组。