Функциональность дискриминатора Mongoose теряется при получении базовой модели с помощью базы данных - PullRequest
0 голосов
/ 16 сентября 2018

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

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

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

Вы можете воспроизвести проблему, выполнив следующий код:

const mongoose = require('mongoose');
const Schema = mongoose.Schema;

let BaseSchema = new Schema({
    name: {type: String},
    child_type: {type: String, enum: ['child_1', 'child_2']}
}, { discriminatorKey: 'child_type' });

let BaseModel = mongoose.model('base_model', BaseSchema);

//this discriminator is going to fail
BaseModel.discriminator('child_1',
    new Schema({
        child_1_prop: {type: String, required: true}
    }));


const db = mongoose.createConnection('mongodb://localhost:27017/test_db');
db.base_model = db.model('base_model');

//discriminator attached to an actual db model works fine
db.base_model.discriminator('child_2',
    new Schema({
        child_2_prop: {type: String, required: true}
    }));


let child_1_model = {
    name: "child_1",
    child_type: 'child_1',
    child_1_prop: 'some prop'
};

let child_2_model = {
    name: "child_2",
    child_type: 'child_2',
    child_2_prop: 'some prop'
};

db.base_model.create(child_1_model).then(t=>{
    console.log('Never called!');
});


db.base_model.create(child_2_model).then(t=>{
    console.log('Called!');
});

Я пробовал разные версии mongoDB и mongoose (включая последние версиите), но проблема сохраняется.Я думаю, проблема в мангусте, хотя я не уверен, что это ошибка или нет.

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