如何在数据迁移期间使用 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?