Добавлены свойства, не полностью работающие после mongoose schema.add - PullRequest
0 голосов
/ 16 марта 2019

У меня есть 2 схемы.Первый из созданного мной модуля, а второй - для расширения указанного модуля.

Многое работает, но есть проблема.

const ProductSchema = new Schema({
    ean: {type: String, required: false, index: false},

    title: {type: String, required: true, index: false},
    description: {type: String, required: true},


    stock: {
        amount: {type: Number, required: true, default: 0},
        track: {type: Boolean, required: true, default: true},
    },

    relatedProducts: [{type: Schema.Types.ObjectId, ref: 'Product'}],

    images: [{type: String, required: false}],

    live: {type: Boolean, required: true, default: false},
}, {
    minimize: false,
    strict: false,
    timestamps: {createdOn: 'createdOn', updatedOn: 'updatedOn'}
});
mongoose.model('Product', ProductSchema);

const ExtendedSchema = new mongoose.Schema({
    preOrder: {
        isPreOrder: {type: Boolean, default: false},
        openFrom: {type: Date},
        openTill: {type: Date},
        releaseDate: {type: Date}
    },
});

ProductSchema.add(ExtendedSchema);

Это работает, ноКогда я просматриваю документ в модели Продукта со свойством preOrder, установленным со значением {isPreOrder: false}, и пытаюсь его зарегистрировать, появляется следующее:

{
    "stock": {
        "amount": 1,
        "track": true
    },
    "preOrder": {
        "isPreOrder": false
    },
    "relatedProducts": [],
    "images": [],
    "_id": "5c8c5d2c3e6bc4e97f8dbe30",
    "sku": "123456",
    "title": "Test product",
    "description": "Hi"
}

Но когда я пытаюсь получить доступ product.preOrder.isPreOrder, выдается следующая ошибка: Cannot read property 'isPreOrder' of undefined.НО, product.get('preOrder').isPreOrder работает.

Может кто-нибудь уточнить это для меня и, возможно, сказать мне, как я могу это исправить, чтобы мне не нужно было вызывать .get с каждым отдельным свойством, которое может или не может бытьдобавлено позже?

...