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

Sådan formateres data i Model, før du gemmer i Mongoose (ExpressJS)

Selvom jeg ikke er sikker på betydningen af ​​req.body.starttime , jeg er ret sikker på, at du leder efter Schema-objekterne pre() funktion, som er en del af Mongoose Middleware og gør det muligt at udføre definitionen af ​​tilbagekaldsfunktioner, før data gemmes. Sandsynligvis noget som dette gør det ønskede job:

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

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

Bemærk, at tilbagekaldsfunktionen for save hændelse kaldes hver gang før en post oprettes eller opdateres. Så dette er for eksempel måden til eksplicit at indstille et "modificeret" tidsstempel.

EDIT:

Takket være din kommentar har jeg nu fået en bedre forståelse af, hvad du vil opnå. I tilfælde af at du ønsker at ændre data, før de bliver tildelt og bestået til posten, kan du nemt bruge set skemaets egenskab:

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

Forudsat at objektet util er inden for omfanget (påkrævet eller hvad som helst) din nuværende implementering passer til signaturen for egenskaben set :

function set(val, schemaType)

Den valgfri parameter schemaType giver dig mulighed for at inspicere egenskaberne for din skemafeltdefinition, hvis transformationsprocessen afhænger af den på nogen måde.




  1. Hvordan kan jeg forbruge tweets fra Twitters streaming-api og gemme dem i mongodb

  2. Hvordan gemmer jeg en fil i MongoDB?

  3. MongoDB:Hent kun dokumenter oprettet inden for de sidste 24 timer?

  4. Brug af findOne i en loop tager for lang tid i Node.js