Так что в основном я пытаюсь создать схему с несколькими дискриминаторами, поскольку это дети.
Дело в том, что архитектура системы такова, что соединение с реальной базой данных создается в более поздней точке выполнения.
Так что я вынужден подключить дискриминатор ибазовые схемы для модели Мангуста и их последующее извлечение для базы данныхбез каких-либо ошибок или журналов.
Вы можете воспроизвести проблему, выполнив следующий код:
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 (включая последние версиите), но проблема сохраняется.Я думаю, проблема в мангусте, хотя я не уверен, что это ошибка или нет.