0

混合コンテナ内に格納されているスキーマのメソッドにアクセスしようとしています。状況は次のとおりです。さまざまなケースモデルがあり、「caseContent」混合プロパティに格納されているこれらの各ケースのスキーマがあります。

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

次に、caseContentプロパティは、次の例のように、私のスキーマの1つのモデルで埋められます。

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');が毎回表示されます)。

ですから、おそらくコンテナのタイプが混在しているために、そのメソッドを呼び出せないことがあると思います...その回避策はありますか?

4

1 に答える 1

2

このスキーマタイプを使用してみることができますSchema.Types.Mixed

var CaseSchema = mongoose.Schema({
    caseContent : Schema.Types.Mixed,
    object : {type:String, default : "null"},
    collision : {type : Boolean, default : false}
});
于 2013-02-14T03:55:57.040 に答える