ATUALIZAÇÃO: (5 anos depois)
Nota: Se você decidir usar a Arquitetura Kappa ( Event Sourcing + CQRS ), não precisará da data atualizada. Como seus dados são um log de eventos imutável e somente anexável, você só precisa da data de criação do evento. Semelhante à arquitetura Lambda , descrita abaixo. Então o estado do seu aplicativo é uma projeção do log de eventos (dados derivados). Se você receber um evento subsequente sobre a entidade existente, usará a data de criação desse evento como data atualizada para sua entidade. Essa é uma prática comumente usada (e geralmente mal compreendida) em sistemas de microsserviços.
ATUALIZAÇÃO: (4 anos depois)
Se você usa ObjectId
como seu _id
campo (que geralmente é o caso), tudo que você precisa fazer é:
let document = {
updatedAt: new Date(),
}
Verifique minha resposta original abaixo sobre como obter o carimbo de data e hora criado no _id
campo. Se você precisar usar IDs de um sistema externo, verifique a resposta de Roman Rhrn Nesterov.
ATUALIZAÇÃO: (2,5 anos depois)
Agora você pode usar a opção #timestamps com a versão mangusto> = 4.0.
let ItemSchema = new Schema({
name: { type: String, required: true, trim: true }
},
{
timestamps: true
});
Se definir carimbos de data e hora, mangusto createdAt
e updatedAt
campos para seu esquema, o tipo designado é Date
.
Você também pode especificar os nomes dos arquivos de data e hora:
timestamps: { createdAt: 'created_at', updatedAt: 'updated_at' }
Nota: Se você estiver trabalhando em um grande aplicativo com dados críticos, reconsidere a atualização de seus documentos. Eu recomendaria que você trabalhasse com dados imutáveis e somente anexáveis ( arquitetura lambda ). O que isso significa é que você só permite inserções. Atualizações e exclusões não devem ser permitidas! Se você quiser "excluir" um registro, poderá inserir facilmente uma nova versão do documento com alguns timestamp
/ version
arquivados e, em seguida, defina um deleted
campo como true
. Da mesma forma, se você deseja atualizar um documento - você cria um novo com os campos apropriados atualizados e o restante dos campos copiados. Então, para consultar este documento, você obtém o que possui o carimbo de data / hora mais recente ou a versão mais alta que é não "excluído" (odeleted
campo indefinido ou falso`).
A imutabilidade dos dados garante que seus dados sejam depuráveis - você pode rastrear o histórico de todos os documentos. Você também pode reverter para a versão anterior de um documento se algo der errado. Se você optar por uma arquitetura desse tipo, ObjectId.getTimestamp()
é tudo o que precisa e não depende do Mongoose.
RESPOSTA ORIGINAL:
Se você estiver usando o ObjectId como seu campo de identidade, não precisará do created_at
campo. Os ObjectIds têm um método chamado getTimestamp()
.
ObjectId ("507c7f79bcf86cd7994f6c0e"). GetTimestamp ()
Isso retornará a seguinte saída:
ISODate ("2012-10-15T21: 26: 17Z")
Mais informações aqui Como extrair a data criada de um Mongo ObjectID
Para adicionar updated_at
arquivos, você precisa usar o seguinte:
var ArticleSchema = new Schema({
updated_at: { type: Date }
// rest of the fields go here
});
ArticleSchema.pre('save', function(next) {
this.updated_at = Date.now();
next();
});