Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

188
Views
¿Cómo puedo registrar una marca de tiempo de cuando se crea un registro en el esquema Mongoose?

Tengo una aplicación que estoy creando que permite a los usuarios ingresar registros en una página web. Quiero mostrar la fecha/hora de cuando se envió cada registro, probé varios métodos diferentes y finalmente tengo la fecha/hora para mostrar en el formato que quiero, pero parece que la marca de tiempo se registra cuando el servidor se inicia en lugar de cuando se agrega el registro. Estoy usando moment.js para formatear

Aquí está mi esquema

 const mongoose = require("mongoose"); const Schema = mongoose.Schema; const moment = require("moment"); var d = new Date(); var formattedDate = moment(d).format("MM-DD-YYYY, h:mm:ss a"); let codeSchema = new Schema({ code: { type: String }, createdAt: { type: String, default: formattedDate }, }, { collection: "codes" } ); module.exports = mongoose.model("Code", codeSchema);

Así es como se ven los registros, excepto que la fecha y la hora es cuando inicio el servidor en lugar de cuando se agregó realmente el documento

 123456789789 12-09-2021, 12:59:33 pm
about 4 years ago · Juan Pablo Isaza
3 answers
Answer question

0

problema interesante Estoy usando mangosta en una aplicación y no he visto este problema. Ver esquema a continuación:

 const mongoose = require("mongoose"); const Schema = mongoose.Schema; const schema = new Schema({ createdBy: Object, created: { type: Date, default: Date.now }, matchName: { type: String, required: true }, matchType: { type: String, required: true }, matchActive: { type: Boolean, default: false }, matchPrivate: { type: Boolean, default: true }, matchTime: { type: String, required: true }, matchDate: { type: String, requried: true }, matchPassword: String, matchMembers: [], course: Object, subCourse: Object, par: { type: Number, required: true }, numberOfHoles: { type: Number, required: true }, frontBackNine: { type: String, required: true, default: null }, completed: { type: Boolean, default: false }, compeletedOn: { type: Date }, winner: { type: String }, startingHole: { type: Number, default: 1 }, scorecardSettings: { type: String, required: true }, tournamentGroups: { type: Array, default: [] }, }); module.exports = mongoose.model("Matches", schema);

Sin embargo, no estoy usando moment.js.

Dos pensamientos aquí:

  1. intente eliminar los comentarios del código moment.js y use:
 Date.now

en lugar de la fecha con formato de momento. Esto es solo para ver si el momento está causando el problema o no y no le dará una solución real.

  1. ¿Cómo está creando la colección y el documento? ¿Está creando un documento cuando se inicia el servidor o cuando el usuario carga el archivo?
about 4 years ago · Juan Pablo Isaza Report

0

Piensa en cuándo se evalúa y asigna esa variable; es cuando se crea el esquema, eso sucede solo una vez. En cualquier caso, debe asignar ese valor en el momento en que guarde el registro, asigne el valor como cualquier otro.

Pero Moongose ya tiene una opción para asignar marcas de tiempo a los registros cuando se crean y actualizan. Véalo aquí: https://mongoosejs.com/docs/guide.html#timestamps

Tu código debería verse así:

 const mongoose = require("mongoose"); const Schema = mongoose.Schema; const codeSchema = new Schema({ code: { type: String }, createdAt: { type: String, default: formattedDate }, }, { collection: "codes", timestamps: true } ); module.exports = mongoose.model("Code", codeSchema);

Sobre el formato, destaco que recomiendo cuidarlo después en el punto final cuando use los datos.

about 4 years ago · Juan Pablo Isaza Report

0

Está asignando un valor predefinido, es por eso que no funciona, debe crear una función y asignar la función como un valor predeterminado para obtener el valor cuando el documento.

 const mongoose = require("mongoose"); const Schema = mongoose.Schema; const moment = require("moment"); var createdAt = function(){ var d = new Date(); var formattedDate = moment(d).format("MM-DD-YYYY, h:mm:ss a"); return formattedDate; }; let codeSchema = new Schema({ code: { type: String }, createdAt: { type: String, default: createdAt }, }, { collection: "codes" } ); module.exports = mongoose.model("Code", codeSchema);
about 4 years ago · Juan Pablo Isaza Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!