2015-05-19 3 views
0

Я создаю форму, используя пакет aldeed: AUTOFORMAutoForm поля

Так что это, как мой код

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» должно быть обновлено.

И да, когда отображаются поля формы, созданные и обновленные поля BB НЕ должны отображаться.

Любая помощь

ответ

3

Существует четкая документация для этого на метеоритный-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" в ваших формах.

Смежные вопросы