如何在猫鼬模式的项目数组中定义对象

时间:2020-03-12 02:31:05

标签: node.js reactjs mongodb express mongoose

在数组内部创建对象以简单地定义数组内部的对象时,

是最佳实践吗? mongodb如何知道期望一个数组,并且对这个数组的查询会有效?

例如在该模式下

const vancouverSchema = new mongoose.Schema(
    {
        jobs: {
            retail: {
                type:Array
            },
            general_labour: {
                type:Array
            },
            sales: {
                type:Array
            },
            government: {

            }

         },
    }
)

最好简单地做

retail: [{
    title: {
        type: String
    },
    description: {
        type:String
    },
    pay: {
        type:Number
    }
}]

VS

retail: {
    type:Array
},

尝试为城市及其各种类别创建一个简单的方案,而这部分设计没有太多的认知开销。

这是温哥华模式的一个示例,但是我将拥有15-20 ++城市模式,只需复制和粘贴即可动态创建馆藏,并且由于要跟踪的内容太多,这似乎是最简单的方法做吧。我知道,复制粘贴很不好,但是..不允许用于高级设计吗?而不是尝试一些聪明的方法来引入错误,谢谢大家。

const vancouverSchema = new mongoose.Schema(
    {
        jobs: {
            retail: [
            {
                title: {
                    type: String
                },
                description: {
                    type: String
                },
                pay: {
                    type: Number
                },
                contact_email: {
                    type: String
                }
            },
                {
        timestamps: true
                }

            ],
            general_labour: {
                type:Array
            },
            sales: {
                type:Array
            },
            government: {

            }

         },
        for_sale: {
            free: {
                type:Array
            },
            antiques: {
                type:Array

            },
            appliances: {
                type:Array

            }
        },
        housing:{
        apt: {
                type:Array
        },
        office_commerical:{
                type:Array
        }
        }
    }
)

1 个答案:

答案 0 :(得分:1)

您可以通过以下方式进行:

const vancouverSchema = new mongoose.Schema({
    jobs: {
        retail: [
            {
                type: mongoose.Schema.Types.ObjectId,
                ref: 'newSchemaCreated'
            }
        ],
        general_labour: {
            type: [Number]
        },
        sales: {
            type: [Boolean]
        },
        government: {}
    }
})

如果您创建另一个架构,则对于零售来说会更好。而且,如果您还有其他类似零售物业的内容,也应该这样做。因为把东西嵌套太多永远是不好的。