Node.js 无法读取未定义的 属性 'toJsonWith'

Node.js Cannot read property 'toJsonWith' of undefined

我正在尝试 return 图标,结果是在页面上生成它们

下面的代码 map 我正在尝试 return 到页面的所有结果。

const icons = await Icon.find({ _id: { $in: ids } }).select({ ...options.select, ...options.additional })
    const results = ids
      .map(id => {
        const iconsGroup = icons.find(icon => icon.id === id)
        if (query.hasPublishingError) {
          iconsGroup.icons = iconsGroup.icons.filter(el => (el.errorsData.length > 0 && el.status === 'draft'))
        }
        return iconsGroup
      })
      .map(i => i.toJsonWith(options.select))

await postProcess(results)

    return {
      docs: results,
      limit: response.limit,
      page: response.page,
      pages: response.pages,
      total: response.total
    }

当我发出 GET 请求时,我收到如下错误:

TypeError: Cannot read property 'toJsonWith' of undefined\n

痛点是.map(i => i.toJsonWith(options.select))

顺便说一下,由于某种原因,这个函数 toJsonWith 在某处找不到声明。 请帮帮我,我已经花了 4 天时间来弄清楚这里出了什么问题。

_id 应该始终是唯一的,所以

const iconsGroup = icons.find(icon => icon.id === id)

应该return一个最多有一个元素的arrayObject。

然后检查发布错误

if (query.hasPublishingError) {
      iconsGroup.icons = iconsGroup.icons.filter(el => (el.errorsData.length > 0 && el.status === 'draft'))
    }

这里 iconsGroup 可能是一个空数组。

接下来制作第二张地图以使用神奇的 toJsonWith(我也不知道它的作用)。

您可以组合这两个地图并直接迭代您的图标,而不是在您的 ID 上使用地图(以下代码为您提供了一组图标,具体取决于 query.hasPublishingError):

const results = icons.map(icon => {
if (query.hasPublishingError && icon.errorsData.length > 0 && icon.status === 'draft') {
    return icon.toJsonWith(options.select)
} else {
    return icon.toJsonWith(options.select)
}
})