Mongoose / MongoDB не создает вложенный документ (без _id) при установке значения по умолчанию для вложенной схемы - PullRequest
0 голосов
/ 16 апреля 2020

Я сталкиваюсь с проблемой, когда мне требуется определенный c набор по умолчанию для схемы с несколькими вложенными подсхемами. При настройке по умолчанию _id не добавляется, но мне нужно, чтобы можно было запрашивать вложенные документы. Реструктуризация затруднена, потому что мне нужно использовать подсхему в других местах. Решения, которые я нашел, включали установку по умолчанию для наиболее глубоко вложенных подсхем, но это невозможно, поскольку мне нужно иметь разные значения по умолчанию для подсхемы.

Вручную с помощью ObjectId () в результатах по умолчанию схемы в дубликатах ObjectIds.

Также приветствуются альтернативы схемам по умолчанию с тем ограничением, что их необходимо применять к новым и существующим документам.

Вот воспроизводимый пример:

(function () {
    'use strict';

    const mongoose = require('mongoose');
    const BoltSchema = new mongoose.Schema({
        material: String,
    });

    const TireSchema = new mongoose.Schema({
        bolts: [BoltSchema],
    });

    const CarSchema = new mongoose.Schema({
        tires: {
            type: {
                frontLeft: TireSchema,
                frontRight: TireSchema,
                rearLeft: TireSchema,
                rearRight: TireSchema,
            },
            default: {
                frontLeft: {
                    bolts: [
                        {
                            material: 'steel',
                        },
                        {
                            material: 'steel',
                        }
                    ],
                },
                frontRight: {
                    bolts: [
                        {
                            material: 'brass',
                        },
                        {
                            material: 'brass',
                        }
                    ],
                },
            },
        },
    });

    const Car = mongoose.model('Car', CarSchema);
    const car = new Car();
    car.save();
})();
...