sql >> Database >  >> NoSQL >> MongoDB

Hoe gegevens in Model op te maken voordat u ze opslaat in Mongoose (ExpressJS)

Hoewel ik niet zeker ben over de betekenis van req.body.starttime , ik ben er vrij zeker van dat je op zoek bent naar de Schema-objecten pre() functie die deel uitmaakt van de Mongoose Middleware en waarmee de definitie van callback-functies kan worden uitgevoerd voordat gegevens worden opgeslagen. Waarschijnlijk doet zoiets als dit het gewenste werk:

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

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

Merk op dat de callback-functie voor de save gebeurtenis wordt elke keer aangeroepen voordat een record wordt gemaakt of bijgewerkt. Dit is dus bijvoorbeeld de manier om expliciet een "gewijzigde" tijdstempel in te stellen.

BEWERKEN:

Dankzij uw opmerking begrijp ik nu beter wat u wilt bereiken. Als u gegevens wilt wijzigen voordat deze worden toegewezen en bewaard in het record, kunt u eenvoudig de set gebruiken eigenschap van het schema:

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

Ervan uitgaande dat het object util valt binnen het bereik (vereist of wat dan ook) uw huidige implementatie past bij de handtekening voor de eigenschap set :

function set(val, schemaType)

De optionele parameter schemaType stelt u in staat om de eigenschappen van uw schemavelddefinitie te inspecteren als het transformatieproces er op enigerlei wijze van afhankelijk is.




  1. Update veld in exacte elementarray in MongoDB

  2. Hoe meerdere documenten in MongoDB bij te werken en upsert met behulp van C# Drivers

  3. Verbind laravel jenssegers met mongodb atlascluster

  4. Hoe maak je veilig verbinding met Heroku Redis via de opdrachtregel?