如何在数据迁移期间使用 mongoose 设置 updatedAt 时间戳

Posted

技术标签:

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

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


  timestamps: true

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

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

【问题讨论】:

您如何保存您的记录以及您的架构是什么样的,您可以在这里发布吗? 您是如何迁移数据的?你在使用一些图书馆吗? 【参考方案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 或基本上任何其他更新方法,这将不起作用。

以上是关于如何在数据迁移期间使用 mongoose 设置 updatedAt 时间戳的主要内容,如果未能解决你的问题,请参考以下文章

如何在 OpsWorks 部署到 Rails 堆栈期间始终运行迁移

如何在更新期间检查该数据是不是已存在于数据库中(Mongoose And Express)

Realm (Swift):如何在迁移期间获取 MutableSet 数据?

在使用 Entity Framework 进行数据库迁移期间,如何避免 .NET 5 WebApp 中出现 Windows 服务错误 1053?

如何在 for 循环中运行 mongoose 方法,因为 mongoose 函数是异步的

Mongoose / Mongodb 迁移到 MySQL