2015-04-20 1 views
0

Я хочу, чтобы у меня были разные типы пользователей для моего веб-приложения. У них будут все методы обычных пользователей, но разные схемы, в частности, для settings и profile. Например:разделите Meteor.users на разные схемы

var UserBase = { 
    emails: { 
    type: [Object], 
    optional: true 
    }, 
    // ... etc not important 
} 

AdminSchema = new SimpleSchema(_.extend(UserBase, { 
    profile: { 
    type: AdminProfileSchema 
    }, 
    settings: { 
    type: AdminSettingsSchema 
    } 
})); 

UserSchema = new SimpleSchema(_.extend(UserBase, { // yada yada }); 

// more or less what I want to do: 
Meteor.users.attachSchema(AdminSchema, { role: "admin" }); 
Meteor.users.attachSchema(UserSchema, { role: "user"}); 

Можно ли подключить разные схемы к Meteor.users, не допуская столкновения?

ответ

2

Я бы иметь две схемы (пользователь, администратор) в качестве подобъектов основной схемы пользователя, сравнявшись нулевое значение, если они не установлены, как это:

var UserSchema = { 
    emails: { 
    type: [Object], 
    optional: true 
    }, 
    // ... etc not important 
    admin: { 
    type: AdminSchema, 
    optional: true 
    }, 
    user: { 
    type: UserSchema, 
    optional: true 
    } 
} 
+0

Я хотел бы также указать на метеор -roles, если вы не знаете об этом: https://github.com/alanning/meteor-roles Имеет отличные встроенные функции ролей, которые хорошо работают с железным маршрутизатором и другими. – Jon

+0

Я только что закончил его, добавив некоторую проверку, чтобы проверить, что тип данных не может быть установлен, если у них нет соответствующей роли, которая работает очень хорошо, поэтому принято – corvid