sql >> データベース >  >> NoSQL >> MongoDB

Mongoose(ExpressJS)に保存する前にModelでデータをフォーマットする方法

    req.body.starttimeの意味はわかりませんが 、Schemaオブジェクトを探していると確信していますpre() マングースミドルウェアの一部であり、データが保存される前にコールバック関数の定義を実行できるようにする関数。おそらく、このようなものが目的の仕事をします:

    var RunSchema = new Schema({
      [...]
      starttime: {
        type: Date,
        default: Date.now
      }
    });
    
    RunSchema.pre('save', function(next) {
      this.starttime = new Date();
      next();
    });
    

    saveのコールバック関数に注意してください イベントは、レコードが作成または更新される前に毎回呼び出されます。したがって、これはたとえば、「変更された」タイムスタンプを明示的に設定する方法です。

    編集:

    あなたのコメントのおかげで、私はあなたが何を達成したいのかをよりよく理解することができました。データが割り当てられてレコードに永続化される前にデータを変更する場合は、setを簡単に利用できます。 スキーマのプロパティ:

    // defining set within the schema
    var RunSchema = new Schema({
      [...]
      starttime: {
        type: Date,
        default: Date.now,
        set: util.getDate
      }
    });
    

    オブジェクトがutilであると仮定します 現在の実装がプロパティsetの署名に適合している範囲内(必須またはその他) :

    function set(val, schemaType)
    

    オプションのパラメータschemaType 変換プロセスが何らかの形でスキーマフィールド定義に依存している場合は、スキーマフィールド定義のプロパティを検査できます。




    1. pymongo:MongoClientまたはConnection

    2. Redisストア(または任意のデータベース?)ロックメカニズム(NodeJS)

    3. 毎日のグループ化内のMongoDB集約

    4. MongodbPHP-小数の整数