Estoy tratando de crear una ruta separada en mi API para un subArray de una matriz anidada. utilizando expressJs.
matriz de categorías:
const Categories = [ { _id: 's654fs54s6d4f' title: 'category 1', SubCats: [ { _id: 'jhgfsf68746' name: 'subcat 1', image: '/assets/images/vr-box-6203301_1920.jpg', }, { _id: 'vb40n5b4vn' name: 'subcat 2', image: '/assets/images/galaxy-s20_highlights_kv_00.jpg', }, ] }, ]categoríaModelo:
import mongoose from 'mongoose' const Catschema = mongoose.Schema({ name: { type: String, required: true, }, image: { type: String, required: true, }, }) const CategorySchema = mongoose.Schema( { title: { type: String, required: true, }, SubCats: [Catschema] }, { timestamps: true, } ) const Category = mongoose.model('Category', CategorySchema) export default Categorycontrolador de categoría:
esto devolvería toda la matriz
const getCategories = asyncHandler(async (req, res) => { const categories = await Category.find({}) res.json(categories) })quiero devolver la matriz 'SubCats'.
intenté esto pero obtuve "SubCats no está definido".
const getSubCategories = asyncHandler(async (req, res) => { const subcategories = await Category.find({SubCats}) res.json(subcategories) })find() devuelve una matriz y toma un objeto para consultar la base de datos. En su pregunta, usó Category.find({SubCats}) que es Category.find({SubCats: SubCats}) , cuyo SubCats no está definido.
Creo que lo que está buscando es Category.find().select('SubCats') , esto devolverá una matriz de categorías solo con SubCats.