简体   繁体   English

expressjs - mongoDb 返回嵌套子数组

[英]expressjs - mongoDb return nested subArray

im trying to create a seprate route in my api for a subArray from a nested array.我试图在我的 api 中为嵌套数组中的子数组创建单独的路由。 using expressJs.使用 expressJs。

categories array:类别数组:

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',
        },
    ]
},
]

categoryModel:类别型号:

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 Category

categoryController:类别控制器:

this would return the whole array这将返回整个数组

const getCategories = asyncHandler(async (req, res) => {
   const categories = await Category.find({})
   res.json(categories)
})

i want to return 'SubCats' array.我想返回“SubCats”数组。

tried this but getting "SubCats is not defined".试过这个但得到“未定义子猫”。

const getSubCategories = asyncHandler(async (req, res) => {
   const subcategories = await Category.find({SubCats})
   res.json(subcategories)
})

find() returns an array and it takes in an object to query the db. find()返回一个数组,它接受一个 object 来查询数据库。 In your question you used Category.find({SubCats}) which is Category.find({SubCats: SubCats}) , which SubCats is not defined.在您的问题中,您使用了Category.find({SubCats}) ,即Category.find({SubCats: SubCats}) ,未定义 SubCats 。

I think what you are looking for is Category.find().select('SubCats') , this will return an array of Categories with SubCats only.我认为您正在寻找的是Category.find().select('SubCats') ,这将返回一个仅包含 SubCats 的类别数组。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM