Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

189
Visualizações
¿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 Respostas
Responde à pergunta

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 Relatório

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 Relatório

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 Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda