当使用这样的before.insert集合钩子时:
collection.before.insert(function(userId, doc) {
doc.createdAt = Date.now();
});
如果createdAt是必填字段(用SimpleSchema声明),那么当在插入挂钩之前进行验证时,服务器会触发"错误:createdAt是必需的"异常。
如何在发生插入挂钩后验证架构?
答案 0 :(得分:0)
将Collection2添加到您的项目中(meteor add aldeed:collection2
,假设它尚未添加),并使用autoValue
。 AutoValue操作仅在客户端上运行以进行验证,但无论是从客户端还是从服务器启动插入/更新,都将始终在服务器上生成保存的实际值。 From the docs
createdAt: {
type: Date,
autoValue: function() {
if (this.isInsert) {
return new Date;
} else if (this.isUpsert) {
return {$setOnInsert: new Date};
} else {
this.unset();
}
}
}
您的另一个选择是将字段设置为可选字段,并使用您的挂钩,但这并不理想。