simpleschema验证和插入集合挂钩之前

时间:2015-03-19 23:08:31

标签: meteor

当使用这样的before.insert集合钩子时:

collection.before.insert(function(userId, doc) {
  doc.createdAt = Date.now();
});

如果createdAt是必填字段(用SimpleSchema声明),那么当在插入挂钩之前进行验证时,服务器会触发"错误:createdAt是必需的"异常。

如何在发生插入挂钩后验证架构

1 个答案:

答案 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();
    }
  }
}

您的另一个选择是将字段设置为可选字段,并使用您的挂钩,但这并不理想。