2013-02-14 53 views
0

我試圖訪問存儲在混合容器中的模式的方法。這裏是的情況: 我有一些案例模型可以是很多不同的東西,所以我有這些東西的模式存儲在「caseContent」混合屬性中。mongodb在嵌套容器中找不到我的模式方法

var CaseSchema = mongoose.Schema({ 
    caseContent : {}, 
    object : {type:String, default : "null"}, 
    collision : {type : Boolean, default : false} 
}); 

然後caseContent屬性充滿了我的模式之一的模型,像這樣的一個爲例:

var TreeSchema = new mongoose.Schema({ 
    appleCount : {type : Number, default : 3} 
}); 
TreeSchema.methods.doStuff = function (data) { 
    console.log('Hey, listen'); 
    return true; 
}; 

然後,我想用我的架構的方法,從原來的容器:

CaseSchema.methods.doStuff = function (data) { 
    if (this.caseContent.doStuff !== undefined) { 
     this.caseContent.doStuff(); 
        console.log('it worked'); 
    } else { 
     console.log('doStuff is undefined'); 
     console.log(this.caseContent.doStuff); 
    } 
}; 

第一次(當所有數據都添加到數據庫中)它可以工作。然後,caseContent.doStuff似乎總是未定義的(console.log('doStuff is undefined');每次出現)。

所以我認爲有些東西讓我無法調用該方法,可能是因爲容器的混合類型......是否有任何workarround?

回答

2

你可以嘗試使用此模式類型Schema.Types.Mixed

var CaseSchema = mongoose.Schema({ 
    caseContent : Schema.Types.Mixed, 
    object : {type:String, default : "null"}, 
    collision : {type : Boolean, default : false} 
});