MongoDB
 sql >> Baza danych >  >> NoSQL >> MongoDB

Jak sformatować dane w modelu przed zapisaniem w Mongoose (ExpressJS)

Chociaż nie jestem pewien znaczenia req.body.starttime , jestem prawie pewien, że szukasz obiektów schematu pre() funkcja, która jest częścią oprogramowania pośredniczącego Mongoose i umożliwia zdefiniowanie funkcji wywołania zwrotnego, które mają zostać wykonane przed zapisaniem danych. Prawdopodobnie coś takiego wykonuje pożądaną pracę:

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

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

Zauważ, że funkcja wywołania zwrotnego dla save zdarzenie jest wywoływane za każdym razem przed utworzeniem lub aktualizacją rekordu. Jest to na przykład sposób na jawne ustawienie „zmodyfikowanego” znacznika czasu.

EDYCJA:

Dzięki Twojemu komentarzowi lepiej zrozumiałem, co chcesz osiągnąć. Jeśli chcesz zmodyfikować dane, zanim zostaną przypisane i utrwalone w rekordzie, możesz łatwo użyć set własność schematu:

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

Zakładając, że obiekt util znajduje się w zakresie (wymagane lub cokolwiek innego) Twoja bieżąca implementacja pasuje do sygnatury właściwości set :

function set(val, schemaType)

Opcjonalny parametr schemaType umożliwia sprawdzenie właściwości definicji pola schematu, jeśli proces transformacji zależy od niej w jakikolwiek sposób.




  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. MongoDB:wyjątek w initAndListen:20 Próba utworzenia pliku blokady w katalogu tylko do odczytu:/data/db, zakończenie

  2. Nodejs Mongo wstawia się do poddokumentu - dynamiczna nazwa pola

  3. Pobierz BinData UUID z Mongo jako ciąg

  4. MongoDB.Driver.Builders jak grupować i uzyskiwać średnią

  5. Mongodb Aggregation Framework:Czy $group używa indeksu?