我正在使用包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"/>
这就是我需要的
当用户在集合中插入数据时,我想添加一个名为'createdBy'的字段,其值为userId。
当用户更新数据时,我想添加一个名为'updatedBy'的字段,其值为userId。
现在,当用户更新数据时,'createdBy'字段不应该更新。但是应该更新'updatedBy'字段。
是的,当显示表单字段时,不会显示createdBy和updatedBy字段。
任何帮助
答案 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"
。