MongoDB
 sql >> Database >  >> NoSQL >> MongoDB

Come formattare i dati in Model prima di salvarli in Mongoose (ExpressJS)

Anche se non sono sicuro del significato di req.body.starttime , sono abbastanza sicuro che stai cercando gli oggetti Schema pre() funzione che fa parte di Mongoose Middleware e consente di eseguire la definizione delle funzioni di callback prima del salvataggio dei dati. Probabilmente qualcosa del genere fa il lavoro desiderato:

var RunSchema = new Schema({
  [...]
  starttime: {
    type: Date,
    default: Date.now
  }
});

RunSchema.pre('save', function(next) {
  this.starttime = new Date();
  next();
});

Nota che la funzione di callback per il save l'evento viene chiamato ogni volta prima della creazione o dell'aggiornamento di un record. Quindi questo è ad esempio il modo per impostare esplicitamente un timestamp "modificato".

MODIFICA:

Grazie al tuo commento, ora ho una migliore comprensione di ciò che vuoi ottenere. Nel caso in cui desideri modificare i dati prima che vengano assegnati e mantenuti nel record, puoi facilmente utilizzare il set proprietà dello Schema:

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

Supponendo che l'oggetto util rientra nell'ambito (richiesto o altro) la tua attuale implementazione si adatta alla firma per la proprietà set :

function set(val, schemaType)

Il parametro facoltativo schemaType consente di esaminare le proprietà della definizione del campo dello schema se il processo di trasformazione dipende in qualche modo da essa.