MongoDB
 sql >> Base de Dados >  >> NoSQL >> MongoDB

Como formatar dados no modelo antes de salvar no Mongoose (ExpressJS)


Embora eu não tenha certeza sobre o significado de req.body.starttime , tenho certeza que você está procurando pelos objetos Schema pre() função que faz parte do Middleware do Mongoose e permite que a definição de funções de retorno de chamada sejam executadas antes que os dados sejam salvos. Provavelmente algo assim faz o trabalho desejado:
var RunSchema = new Schema({
  [...]
  starttime: {
    type: Date,
    default: Date.now
  }
});

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

Observe que a função de retorno de chamada para save evento é chamado toda vez antes de um registro ser criado ou atualizado. Portanto, esta é, por exemplo, a maneira de definir explicitamente um carimbo de data/hora "modificado".

EDITAR:

Graças ao seu comentário, agora entendi melhor o que você deseja alcançar. Caso você queira modificar os dados antes que eles sejam atribuídos e persistidos no registro, você pode facilmente utilizar o set propriedade do esquema:
// defining set within the schema
var RunSchema = new Schema({
  [...]
  starttime: {
    type: Date,
    default: Date.now,
    set: util.getDate
  }
});

Supondo que o objeto util está dentro do escopo (obrigatório ou qualquer outro) sua implementação atual se encaixa na assinatura da propriedade set :
function set(val, schemaType)

O parâmetro opcional schemaType permite inspecionar as propriedades de sua definição de campo de esquema se o processo de transformação depender dele de alguma forma.