Учетные записи пользователей дизайна базы данных Meteor Mongo

Я создаю веб-приложение с Meteor и использую пакет Meteor Accounts-password и account-facebook, чтобы упростить вход в систему. У пользователя есть некоторая информация, связанная с ним, например, адрес электронной почты и пароль, но я хочу связать с ними дополнительную информацию после создания учетной записи.

Я знаю два способа сделать это, и мне было интересно, как мне это сделать, поскольку я не могу найти никакой информации об этом в Интернете.

Опция 1:

Я добавляю всю дополнительную информацию (например, имя пользователя, отображаемое имя и прочее) внутрь объекта Meteor.user.profile. Это кажется плохим решением, поскольку пользователи по умолчанию имеют доступ ко всему в объекте профиля, и мне приходится вручную отказывать им в доступе.

Вариант 2:

Я создаю новую коллекцию Profile-information и сохраняю все дополнительные данные о пользователе, а затем привязываю их к объекту meteor.user через какой-то общий ключ. Это также кажется плохим решением, так как мне нужно разделить свои данные, как в SQL, и не иметь всех преимуществ встроенных документов в mongodb.

Это был мой мыслительный процесс до сих пор, и я не знаю, как продолжить. Какой вариант кажется лучшим, или есть вариант 3, который будет работать лучше?

Заранее спасибо.


person VictorVH    schedule 12.12.2015    source источник
comment
В чем проблема, если пользователи имеют доступ к такого рода информации, которая по своей сути является общедоступной? Другой вариант — обновить пользователя за пределами объекта профиля, и в этом случае у вас будет выбор, публиковать поле или нет.   -  person forallepsilon    schedule 13.12.2015
comment
@forallepsilon Могу ли я что-нибудь обновить в объекте Meteor.user? Могу ли я предоставить поле, например, с именем «дополнительные данные», а затем сохранить все свои данные в объекте json в этом поле?   -  person VictorVH    schedule 13.12.2015
comment
Как вы, возможно, уже проверили, да! Однако вы можете выбрать другое имя переменной. user.additional-data будет интерпретировать тире как минус. Вы можете получить к нему доступ с помощью user['additional-data'], но лучше использовать другое имя.   -  person forallepsilon    schedule 13.12.2015
comment
@forallepsilon Да, это было просто имя для примера. Спасибо за помощь.   -  person VictorVH    schedule 13.12.2015


Ответы (1)


Благодаря @forallepsilon я узнал, что вы можете записывать любые данные в пользовательский объект, который хотите. Раньше я думал, что пользовательский объект был заблокирован, и вы могли хранить дополнительные данные только в поле профиля.

Я буду хранить дополнительные данные о пользователе внутри объекта Meteor.user, просто создав дополнительные поля.

person VictorVH    schedule 13.12.2015