web-dev-qa-db-ja.com

マングースを理解する[Schema.Types.Mixed]

以下のスキーマは正しく定義されていますか、それともwritingwriting: [Schema.Types.Mixed]またはwriting: [{}]である必要がありますか?

つまり、辞書の配列([{}、{}、{}])がある場合、別のスキーマを作成してそれを埋め込まない限り、内部構造を事前に定義することはできません。それはドキュメントの正しい解釈ですか?

http://mongoosejs.com/docs/schematypes.html

var blogSchema = new mongoose.Schema({
  title:  String,
  writing: [{
        post: String,
        two: Number,
        three : Number,
        four  : String,
        five : [{  a: String,
                    b : String,
                    c  : String,
                    d: String,
                    e: { type: Date, default: Date.now }, 
                }]
  }],
});

ありがとう。

14
cathy.sasaki

そのスキーマは問題ありません。配列スキーマ要素内でオブジェクトを定義すると、暗黙的にそれ自体のSchemaオブジェクトとして扱われます。そのため、独自の_idフィールドがありますが、_idオプションを無効にしてスキーマを明示的に定義することで無効にできます。

var blogSchema = new mongoose.Schema({
    title: String,
    writing: [new Schema({
        post: String,
        two: Number,
        three : Number,
        four  : String,
        five : [new Schema({ 
            a: String,
            b: String,
            c: String,
            d: String,
            e: { type: Date, default: Date.now }, 
        }, {_id: false})]
    }, {_id: false})],
});
21
JohnnyHK