MongoDB
 sql >> Base de données >  >> NoSQL >> MongoDB

Comment formater les données dans Model avant de les enregistrer dans Mongoose (ExpressJS)

Bien que je ne sois pas sûr de la signification de req.body.starttime , je suis sûr que vous recherchez les objets Schema pre() qui fait partie du Middleware Mongoose et permet de définir des fonctions de rappel à exécuter avant la sauvegarde des données. Probablement quelque chose comme ça fait le travail souhaité :

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

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

Notez que la fonction de rappel pour le save L'événement est appelé à chaque fois avant la création ou la mise à jour d'un enregistrement. C'est donc par exemple le moyen de définir explicitement un horodatage "modifié".

MODIFIER :

Grâce à votre commentaire, j'ai maintenant une meilleure compréhension de ce que vous voulez réaliser. Si vous souhaitez modifier des données avant qu'elles ne soient affectées et conservées dans l'enregistrement, vous pouvez facilement utiliser le set propriété du Schéma :

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

En supposant que l'objet util est dans la portée (obligatoire ou autre) votre implémentation actuelle correspond à la signature de la propriété set :

function set(val, schemaType)

Le paramètre facultatif schemaType vous permet d'inspecter les propriétés de la définition de votre champ de schéma si le processus de transformation en dépend de quelque manière que ce soit.