Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

190
Vistas
¿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 Respuestas
Responde la pregunta

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 Denunciar

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 Denunciar

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 Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda