如何使用Meteor autoform在服务器上添加所需的dateSubmitted?

时间:2015-08-02 08:51:20

标签: meteor meteor-autoform

我有一个帖子集合,需要dateSubmitted字段。但是,应使用服务器时间在服务器上生成此字段的值。

Posts.attachSchema(new SimpleSchema({
  title: {
    type: String,
    optional: false
  },
  content: {
    type: String,
    optional: false
  },
  dateSubmitted: {
    type: Date,
    optional: false
  }
}));

问题在于,如果我只有titlecontent的值,则表单不会在客户端上提交。但我也无法将其插入到集合中而没有从服务器生成的dateSubmitted值。

我查看了Autoform挂钩,在这种情况下似乎没有任何效果。

这是我想要的工作流程:

  1. 架构说titlecontentdateSubmitted是必需的。
  2. 客户端仅使用titlecontent成功提交表单。
  3. 服务器添加dateSubmitted
  4. 然后将新文档插入到集合中。 4.A.如果由于某种原因无法生成dateSubmitted,则会将错误发送回客户端。

1 个答案:

答案 0 :(得分:1)

假设您已经在使用aldeed:collection2,那么在您的架构中使用以下内容:

dateSubmitted: {
    type: Date,
    autoValue: function(){
      if ( this.isInsert ) return new Date();
      else if ( this.isUpsert ) return { $setOnInsert: new Date };
      else if ( this.isSet ) this.unset();
    }
  }

这将自动在insert / upsert上设置日期,然后拒绝所有后续更改。

来自http://0rocketscience.blogspot.com/2015/07/meteor-security-no-2-all-praise-aldeed.html