【问题标题】:expressjs - mongoDb return nested subArrayexpressjs - mongoDb 返回嵌套子数组
【发布时间】:2022-01-11 05:49:52
【问题描述】:

我试图在我的 api 中为嵌套数组中的子数组创建单独的路由。使用 expressJs。

类别数组:

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

类别型号:

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

类别控制器:

这将返回整个数组

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

我想返回“SubCats”数组。

试过了,但得到“未定义 SubCats”。

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

【问题讨论】:

    标签: javascript mongodb api express


    【解决方案1】:

    find() 返回一个数组,它接受一个对象来查询数据库。在您的问题中,您使用了Category.find({SubCats}),即Category.find({SubCats: SubCats}),未定义SubCats。

    我认为您正在寻找的是Category.find().select('SubCats'),这将返回一个仅包含 SubCats 的类别数组。

    【讨论】:

    • 感谢它的工作。还有一种方法可以通过 id 获取它们。例如:const subcategory = await Category.find({}).select('SubCats').findById(req.params.id)
    • Category.findById(req.params.id).select('SubCats')
    • 感谢您的回复。但我的意思是通过 id 获取 subcats 项目。例子。通过 id 'jhgfsf68746' 获取 'subcat 1'。
    • @aboodalwa7sh 我相信你可以做到Category.find({'SubCats.id': req.params.id}).select('SubCats') ? (未测试)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-05-01
    • 2017-04-02
    • 2017-07-26
    • 2016-11-22
    • 1970-01-01
    • 2020-03-14
    • 1970-01-01
    相关资源
    最近更新 更多