2

このような日付間隔タイプのドキュメントに多くのフィールドがあります

{
    publishDate:
    {
       start: {type: Date, required: true},
       end: {type: Date, required: true}
    }
}

コードの重複を減らして保守を容易にするために、2 つのフィールドを含むDateIntervalなどのカスタム Mongoose タイプを作成する方法:

  1. 始める
  2. 終わり

両方のフィールドが入力され、開始が終了の前であることを確認するバリデーターが含まれていますか?

4

3 に答える 3

3

Mongoose でスキーマを再利用できます。

var DateIntervalSchema = new Schema({
   start: {type: Date, required: true},
   end: {type: Date, required: true}
});

var SomeSchema = new Schema({
   publishDate: [DateIntervalSchema],
   // ... etc
});

他のコレクションからドキュメントを参照することもできます。

var SomeSchema = new Schema({
   publishDate: {type: Schema.ObjectId, ref: 'DateInterval'}
});    

//using populate
SomeModel.findOne({ someField: "value" })
   .populate('publishDate') // <--
   .exec(function (err, doc) {
      if (err) ...

   })
于 2014-06-30T13:44:12.130 に答える
1

カスタム スキーマ タイプを開発する必要があります。これを行うプラグインはすでに多数ありますが、そのうちの 1 つが長い数の場合、https ://github.com/aheckmann/mongoose-long/blob/master/lib/index.js にあります。これは従うべき良い基本的な例です。

次に、DateIntervalカスタム スキーマを作成して type としてキャストし、 a をDate使用しvalidatorてチェックstartしてend- http://mongoosejs.com/docs/api.html#schematype_SchemaType-validateます。

于 2014-06-30T13:43:26.397 に答える