因此,基本上,我正在尝试创建一个具有多个区分符的方案,作为其子级。
问题在于系统的体系结构是如此,与实际数据库的连接将在以后的执行点中创建。
因此,我不得不将鉴别器和基本方案附加到猫鼬模型上,稍后再将其检索给db。
问题在于,每当我尝试创建派生类型的新文档时,create函数都会挂起并且永远不会返回,而不会引发任何错误或日志。
您可以通过执行以下代码来重现该问题:
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版本(包括最新版本),但问题仍然存在。我想问题出在猫鼬,尽管我不确定这是否是错误。