AutoForm字段

时间:2015-05-19 12:15:30

标签: javascript meteor meteor-autoform

我正在使用包aldeed创建一个表单:autoform

所以我的代码是

<Resource auth="Container" driverClassName="net.sourceforge.jtds.jdbc.Driver" logAbandoned="true" maxActive="100" maxIdle="30" maxWait="10000" name="jdbc/testservice2" password="abc" removeAbandoned="true" removeAbandonedTimeout="60" type="javax.sql.DataSource" 
    url="jdbc:jtds:sqlserver://localhost;databaseName=testdb;SelectMethod=Cursor" username="abc"/>

这就是我需要的

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

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

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

    是的,当显示表单字段时,不会显示createdBy和updatedBy字段。

    任何帮助

1 个答案:

答案 0 :(得分:3)

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"