我试图返回图标,因此,在页面上产生它们
map
下面的代码是我试图返回到页面的所有结果。
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 undefinedn
痛点为.map(i => i.toJsonWith(options.select))
toJsonWith
不能作为声明在某处找到。请帮帮我,我这4天都在想办法弄清楚到底出了什么问题。
_id必须是唯一的
const iconsGroup = icons.find(icon => icon.id === id)
应该返回一个最多包含一个元素的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)
}
})