【问题标题】:How do I set the updatedAt timestamp using mongoose during a data migration如何在数据迁移期间使用 mongoose 设置 updatedAt 时间戳
【发布时间】:2017-01-17 03:07:57
【问题描述】:

我正在进行从 MS SQL 到 MongoDB 的数据迁移。我正在使用猫鼬,并在我的架构中将时间戳属性设置为 true。

{
  timestamps: true
}

然后我尝试设置 createdAt 和 updatedAt 字段的值。插入记录时。 createdAt 字段保存正确,但是,updatedAt 字段设置为 createdAt 字段的任何值。

这是标准行为还是我做错了什么?

【问题讨论】:

  • 您如何保存您的记录以及您的架构是什么样的,您可以在这里发布吗?
  • 您是如何迁移数据的?你在使用一些图书馆吗?

标签: node.js mongoose


【解决方案1】:

时间戳选项真的很酷,毫无疑问,但我仍然在做“老派”:

'use strict';
/**
 * Module dependencies
 */
const mongoose = require('mongoose');


var DataSchema = new mongoose.Schema({
    name: {
        type: String,
        required: true, 
        lowercase: true
    }, 
    created: {
        type: Date,
        default: Date.now
    },
    updated: {
        type: Date,
        default: Date.now
    }
});

DataSchema.pre('save', function(next) {
    this.updated = Date.now();
    return next();
});

mongoose.model('Data', DataSchema);

【讨论】:

  • 这对我有用,因为我可以检查是否已设置 updatedAt 字段,如果未设置则仅自动设置。
  • 嘿Soli,很久以前的事了,试试用内置的时间戳管理器吧。
  • 请注意,如果您运行 update、findAndUpdate 或基本上任何其他更新方法,这将不起作用。
猜你喜欢
  • 2019-12-01
  • 1970-01-01
  • 1970-01-01
  • 2019-06-16
  • 2013-08-06
  • 2019-06-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多