mongodb将无法在嵌套容器中找到我的架构方法

时间:2013-02-14 03:18:41

标签: javascript node.js mongodb mongoose

我正在尝试访问存储在混合容器中的架构的方法。情况如下: 我有一些案例模型可以有很多不同的东西,所以我有一个模式存储在“caseContent”混合属性中的每一个。

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');每次都出现。)

所以我觉得有些东西让我无法调用那个方法,可能是因为容器的混合类型......是否有任何工作原理?

1 个答案:

答案 0 :(得分:2)

您可以尝试使用此架构类型Schema.Types.Mixed

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