gpt4 book ai didi

javascript - Meteor 中的自动 createdAt 和 updatedAt 字段

转载 作者:可可西里 更新时间:2023-11-01 09:57:23 28 4
gpt4 key购买 nike

在我的收藏中,我希望自动生成 createdAtupdatedAt 字段,其中包含最后一次插入/更新对象的日期 -有点像它发生在 Ruby on Rails 中。目前我正在和一个类似于这个的观察者一起做这件事:

MyCollection.find({}).observeChanges({
changed: function(id, changes) {
MyCollection.update(id, ...);
},
});

是否有更好/更高效/更直接的方法?

最佳答案

我使用 Collection2。它支持模式中的 autoValue,这是一个计算字段强制值的函数。由于这两个字段在所有集合中使用,您可以将它们保存到一个变量中:

@SchemaHelpers =
createdAt:
type: Date
autoValue: ->
if @isInsert
return new Date
if @isUpsert
return $setOnInsert: new Date
if @isUpdate
@unset()
return
updatedAt:
type: Date
autoValue: ->
return new Date

然后在集合中:

Schema = {}
Posts = new Meteor.Collection("posts")
Schema.Posts = new SimpleSchema
createdAt: SchemaHelpers.createdAt
updatedAt: SchemaHelpers.updatedAt
title:
type: String
max: 30
body:
type: String
max: 3000
Posts.attachSchema(Schema.Posts)

这个解决方案使得updatedAt一直存在并且它的值会非常接近刚插入时的createdAt(不一定相同)。如果您需要在插入时不设置 updatedAt,您可以使用类似 Collection2 readme 中示例的内容:

updatedAt: {
type: Date,
autoValue: function() {
if (this.isUpdate) {
return new Date();
}
},
denyInsert: true,
optional: true
},

但这不处理upserts .我不知道有什么好的解决方案可以正确处理更新插入并在插入时将字段留空。

关于javascript - Meteor 中的自动 createdAt 和 updatedAt 字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22474667/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com