众多的猫鼬

时间:2020-03-20 19:56:15

标签: node.js mongodb mongoose

我正在尝试为报告系统创建一个动态菜单项,我有大约5个主要报告组,每个组可能有另一个组,所以最终我们有了该组报告,

Something like this:
    Finance Reports ---> Daily Reports ----> Payments Report 
                      |> Monthly Reports  |> Customers Reports

我想做的是在JSON响应上返回一个复杂的层次结构来构建菜单,该场景将是: 用户登录--->获取用户组--->获取每个组组--->获取组报告。

请帮助您获得上述情况所需的结构。

我拥有的模式:

    //ReportsGroups: 
     const reportsGroupSchema = new mongoose.Schema({
            groupLabel: {
                type: String,
                required: true,
                unique: true
            },
            groupName: {
                type: String,
                required: true,
                unique: true
            },
            groupId: {
                type: mongoose.Schema.Types.ObjectId,
                ref: 'ReportsGroup'
            },
            groupHierarchy: {
                type: Number,
                required: true
            }
        },
        {
            timestamps: true
        });

   // Reports:
    const reportSchema = new mongoose.Schema({
            reportLabel: {
                type: String,
                required: true,
                unique: true
            },
            reportName: {
                type: String,
                required: true,
                unique: true
            },
            groupId: {
                type: mongoose.Schema.Types.ObjectId,
                ref: 'ReportsGroups',
                required: true
            },
            storedProcedure: {
                type: String,
                required: true
            }
        },
        {
            timestamps: true
        });

    //Users Reports: 

    const userReportSchema = new mongoose.Schema({
            groupId: {
                type: mongoose.Schema.Types.ObjectId,
                ref: 'ReportsGroups',
                required: true
            },
            userId: {
                type: mongoose.Schema.Types.ObjectId,
                ref: 'Users',
                required: true
            }
        },
        {
            timestamps: true
        });

0 个答案:

没有答案