Как добавить настраиваемые поля в коллекцию Meteor.users?

Извините за мой английский. Я использую пакет useraccounts:bootstrap для входа, регистрации и так далее. Как я могу добавить произвольные данные в коллекцию Meteor.users после регистрации. Например, я хочу, чтобы у пользователей после регистрации было поле «статус» со значением «ложь» или поле «время» с временем регистрации. Спасибо.


person Denis Brezhitskiy    schedule 06.05.2016    source источник


Ответы (3)


Если пользователю необходимо предоставить данные, вам потребуется настроить пользовательский интерфейс и добавить нужные поля.

На сервере вы можете прикрепить обратный вызов onCreateUser() для установки данных при создании нового пользователя.

import _ from 'lodash';

Accounts.onCreateUser((options, user) => {
  // add your extra fields here; don't forget to validate the options, if needed
  _.extend(user, {
    status: false,
    createdAt: new Date()
  });

  return user;
});

аргумент options содержит данные со стороны клиента.

person MasterAM    schedule 06.05.2016

useraccounts:bootstrap позволяет настраивать шаблоны панели регистрации, добавляя видимые, явные и редактируемые поля в регистрационную форму, как описано в документации GitHub по useraccounts/core (ищите AccountTemplates.addFields). метод).

Однако useraccounts:bootstrap зависит от accounts-password, поэтому вы можете использовать его метод Accounts.createUser, просто передав дополнительные поля в объект передается в метод Accounts.createUser. Ваш метод createUser будет выглядеть так:

Accounts.createUser({
   username:'newuser',
    password:'pass1234',
    profile:{ //no sensitive data here, this can be modified by the user
          },
    registrationTime: new Date, //date & time of registration
    status: false

    });

Эта проблема обсуждалась на форумах Meteor:forums.meteor.com.

Более элегантный способ решения вашей проблемы – вызов серверной функции Accounts.onCreateUser каждый раз при создании учетной записи пользователя. Эта функция назначит регистрациюTime и статус вновь созданной учетной записи. Проверьте это в документации Meteor: Accounts.onCreateUser docs.meteor.com

person wilddesign    schedule 06.05.2016
comment
Ссылки на внешние ресурсы приветствуются, но, пожалуйста, добавьте контекст вокруг ссылки, чтобы ваши коллеги-пользователи имели некоторое представление о том, что это такое и почему оно там. Всегда цитируйте наиболее релевантную часть важной ссылки на случай, если целевой сайт недоступен или навсегда отключится. - person Gustavo Morales; 06.05.2016

Вот как я это делаю; соответствует стилю документации метеора и не требует lodash:

import { Accounts } from 'meteor/accounts-base';

Accounts.onCreateUser((options, user) => {
  const userToCreate = Object.assign({
    status: false,
    createdAt: new Date(),
  }, user);

  if (options.profile) userToCreate.profile = options.profile;

  return userToCreate;
});
person Tomachi    schedule 08.10.2018