Estoy tratando de devolver íconos, como resultado, para producirlos en la página
El siguiente código a continuación map todos los resultados que estoy tratando de devolver a la página.
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 } Cuando realizo una solicitud GET , recibo un error como:
TypeError: Cannot read property 'toJsonWith' of undefined\n
El punto doloroso es .map(i => i.toJsonWith(options.select))
Por cierto, por alguna razón, esta función toJsonWith no se puede encontrar como una declaración en alguna parte. Por favor, ayúdenme, estoy tratando de averiguar qué está mal aquí durante 4 días.
un _id siempre debe ser único, por lo que
const iconsGroup = icons.find(icon => icon.id === id)debe devolver un arrayObject con un máximo de un Elemento.
Luego comprueba si hay errores de publicación.
if (query.hasPublishingError) { iconsGroup.icons = iconsGroup.icons.filter(el => (el.errorsData.length > 0 && el.status === 'draft')) }Y aquí puede suceder que iconsGroup sea una matriz vacía.
A continuación, crea un segundo mapa para usar su toJsonWith mágico (tampoco sé qué hace).
Puede combinar estos dos mapas e iterar directamente sobre sus íconos en lugar de usar un mapa en sus ID (el siguiente código le brinda una variedad de íconos dependiendo de 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) } })