sql >> Databáze >  >> NoSQL >> MongoDB

Jak formátovat data v Modelu před uložením v Mongoose (ExpressJS)

I když si nejsem jistý významem req.body.starttime , jsem si docela jistý, že hledáte objekty Schema pre() funkce, která je součástí Mongoose Middleware a umožňuje provést definici funkcí zpětného volání před uložením dat. Něco takového pravděpodobně dělá požadovanou práci:

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

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

Všimněte si, že funkce zpětného volání pro save událost je volána pokaždé před vytvořením nebo aktualizací záznamu. Toto je například způsob, jak explicitně nastavit "upravené" časové razítko.

EDIT:

Díky vašemu komentáři jsem nyní lépe pochopil, čeho chcete dosáhnout. V případě, že chcete upravit data předtím, než budou přiřazena a uložena do záznamu, můžete snadno použít set vlastnost schématu:

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

Za předpokladu, že objekt util je v rozsahu (požadovaném nebo cokoli jiného), vaše aktuální implementace odpovídá podpisu pro vlastnost set :

function set(val, schemaType)

Volitelný parametr schemaType umožňuje zkontrolovat vlastnosti definice pole schématu, pokud na ní proces transformace nějakým způsobem závisí.




  1. Rozdíl mezi count() a find().count() v MongoDB

  2. Jaký je doporučený ekvivalent kaskádového mazání v MongoDB pro vztahy N:M?

  3. MongoDB vs. Cassandra

  4. Catbox-redis zobrazuje chybu odpojení v mé aplikaci hapijs