我正在使用包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"
。