使用猫鼬时间戳选项不会创建属性
Posted
技术标签:
【中文标题】使用猫鼬时间戳选项不会创建属性【英文标题】:Using mongoose timestamps option does not create properties 【发布时间】:2019-01-17 11:13:24 【问题描述】:我可能遗漏了一些明显的东西,但已阅读文档。我有一个现有的集合。使用 Robo3T,我放弃了它。在我的脚本中,节点用完了,我定义了模式添加时间戳选项,如下所示。我运行我的应用程序。集合已创建。但是,当我通过 Robo 查看时,没有时间戳。其他一切都如我所料。创建索引。字段已填充。
我希望有两个额外的属性:createdAt 和 updatedAt。
我正在使用猫鼬 5.2.7。
const categorySchema = mongoose.Schema(
value: String,
recordName: String,
sourceId: Number,
targetId: Number,
requestParameters: Object,
magentoResponse: Object
,
autoIndex: true
,
timestamps: true
);
categorySchema.index(sourceId: 1, unique: true);
categorySchema.index(targetId: 1, recordName: 1, unique: true);
【问题讨论】:
【参考方案1】:您是如何重新创建这些记录的?如果他们没有通过 mongoose(但通过 mongoDB 客户端/cli),他们将没有这些字段。这些是mongoose specific。
并在您创建新模型并保存时创建:
var thingSchema = new Schema(.., timestamps: createdAt: 'created_at' );
var Thing = mongoose.model('Thing', thingSchema);
var thing = new Thing();
thing.save(); // `created_at` & `updatedAt` will be included
【讨论】:
【参考方案2】:哦!我是个白痴。 autoIndex 和时间戳应该在同一个块中。我是个白痴!
应该是:
const categorySchema = mongoose.Schema(
value: String,
recordName: String,
sourceId: Number,
targetId: Number,
requestParameters: Object,
magentoResponse: Object
,
autoIndex: true,
timestamps: true
);
categorySchema.index(sourceId: 1, unique: true);
categorySchema.index(targetId: 1, recordName: 1, unique: true);
【讨论】:
以上是关于使用猫鼬时间戳选项不会创建属性的主要内容,如果未能解决你的问题,请参考以下文章
如何在数据迁移期间使用 mongoose 设置 updatedAt 时间戳
使用 DataflowRunner 和 Dataflow 服务运行时,PubsubIO 不会将自定义时间戳属性输出为 context.timestamp