Как определить объект в массиве элементов для схемы mon goose - PullRequest
0 голосов
/ 12 марта 2020

является наилучшей практикой при создании объекта внутри массива, чтобы просто определить объект внутри массива? Как 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 Ответ

1 голос
/ 12 марта 2020

Вы можете сделать так:

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

Для розницы было бы лучше, если бы вы создали другую схему. И если у вас есть что-то еще, например, торговая недвижимость, вы должны сделать то же самое. Потому что вкладывать слишком много вложенных вещей никогда не бывает хорошо.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...