获取实例的大孩子

时间:2018-10-23 20:58:29

标签: javascript sequelize.js

我建立了关联,因此一个类别有很多帖子,每个帖子都有很多评论:

CategoryPostComment

拥有一个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 },
  ...

1 个答案:

答案 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()))

现在,当我们打印注释时,它将显示所有已解决的承诺的响应数组。