Я создаю нового пользователя с помощью Accounts.createUser(), и он работает нормально, если вы не делая ничего необычного. Но я хочу добавить некоторые другие поля для нового пользователя, которые не указаны в документации. Вот мой код:
var options = {
username: "funnyUserNameHere",
email: "[email protected]",
password: "drowssap",
profile: {
name: "Real Name"
},
secretAttribute: "secretString"
};
var userId = Accounts.createUser(options);
В этом примере я добавил secretAttribute к моему объекту параметров. Поскольку это не задокументировано, это просто справедливо, что мой атрибут не добавляется в объект пользователя.
Итак, я погуглил и понял, что что-то вроде этого может работать:
Accounts.onCreateUser(function(options, user) {
if (options.secretAttribute)
user.secretAttribute = options.secretAttribute;
return user;
});
И да! Это работает, но всегда есть НО.. *НО.. После этого он больше не сохраняет профиль под объектом пользователя. Однако это заставляет его работать:
Accounts.onCreateUser(function(options, user) {
if (options.secretAttribute)
user.secretAttribute = options.secretAttribute;
if (options.profile)
user.profile = options.profile;
return user;
});
Итак, что я хочу от вас, ребята?
- Я хочу знать, почему onCreateUser теряет профиль (до исправления выше) в моем случае?
- Является ли мой подход хорошей практикой?
- Есть ли лучшее решение, добавляющее дополнительные атрибуты для пользовательского объекта при их создании?
ps: Думаю понятно, почему я не хочу сохранять все лишние поля под профилем ;)