我正在使用包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
    }
}));


这就是我所需要的


当用户将数据插入集合中时,我想添加一个名为“ createdBy”的字段,其值将为userId。
当用户更新数据时,我想添加一个名为“ updatedBy”的字段,其值将为userId。


现在,当用户更新数据时,“ createdBy”字段不应更新。但是“ updatedBy”字段应该更新。

是的,当显示表单字段时,将不显示createdBy和updateedBy字段。

任何帮助

最佳答案

在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
  }


您可以将其添加到每个字段中,以防止其显示在自动表单/快速表单中:

autoform: {
  omit: true
}


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

09-19 07:33