以下のスキーマは正しく定義されていますか、それともwriting
はwriting: [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 },
}]
}],
});
ありがとう。
そのスキーマは問題ありません。配列スキーマ要素内でオブジェクトを定義すると、暗黙的にそれ自体の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})],
});