自动表单字段

AutoForm fields

我正在使用包 aldeed:autoform

创建表单

我的代码是这样的

CompanyData = new Mongo.Collection('companyData');
CompanyData.attachSchema(new SimpleSchema({
    allFields: {
        type: String,
        allowedValues: ['title', 'logo', 'url'],
        autoform: {
            type: "selectize"
        }
    },
    title:{
        type:'String',
        label:'Name',
        unique:true,
        max:100
    },

    logo:{
        type:'String',
        label:'Logo',
        optional:true
    }
}));

这就是我需要的

  1. 当用户在集合中插入数据时,我想添加一个名为 'createdBy' 的字段,其值为 userId。

  2. 当用户更新数据时,我想添加一个名为'updatedBy'的字段,其值为userId。

现在 'createdBy' 字段不应在用户更新数据时更新。但是 'updatedBy' 字段应该更新。

是的,当显示表单域时,将不显示 createdBy 和 updatedBy 域。​​

任何帮助

在 meteor-collection2 自述文件 (https://github.com/aldeed/meteor-collection2#autovalue) 上有明确的文档。

 // Force value to be current date (on server) upon insert
  // and prevent updates thereafter.
  createdAt: {
    type: Date,
    autoValue: function() {
      if (this.isInsert) {
        return new Date;
      } else if (this.isUpsert) {
        return {$setOnInsert: new Date};
      } else {
        this.unset();
      }
    }
  },
  // Force value to be current date (on server) upon update
  // and don't allow it to be set upon insert.
  updatedAt: {
    type: Date,
    autoValue: function() {
      if (this.isUpdate) {
        return new Date();
      }
    },
    denyInsert: true,
    optional: true
  }

在文档中的这个示例中,使用了 createdAt 和 updatedAt。您只需更改这些以引用用户 ID。

  createdBy: {
    type: String,
    autoValue: function() {
      if (this.isInsert) {
        return this.userId;
      } else if (this.isUpsert) {
        return {$setOnInsert: this.userId};
      } else {
        this.unset();
      }
    }
  },
  updatedBy: {
    type: String,
    autoValue: function() {
      if (this.isUpdate) {
        return this.userId;
      }
    },
    denyInsert: true,
    optional: true
  }

您可以将此添加到每个字段以防止它显示在 autoforms/quickforms:

autoform: {
  omit: true
}

或者您可以在表单中使用 omitFields="createdBy,updatedBy"