如何向Meteor.users集合添加自定义字段?

时间:2016-05-06 10:47:12

标签: meteor user-accounts meteor-accounts meteor-useraccounts

抱歉我的英文。我使用包useraccounts:bootstrap进行登录,注册等。如何在注册后向Meteor.users集合中添加任意数据。例如,我想,注册后的用户有一个字段' status'值为' false'或者字段' time'随着注册时间。谢谢。

3 个答案:

答案 0 :(得分:3)

如果用户需要提供数据,则需要customize the UI并添加所需的字段。

在服务器上,您可以附加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参数包含来自客户端的数据。

答案 1 :(得分:1)

useraccounts:bootstrap 为您提供了一种通过在注册表单中添加可见,显式和可编辑字段来自定义注册面板模板的方法,如useraccounts / core的GitHub文档中所述(外观 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 。此功能会将registrationTime和status分配给新创建的帐户。请在Meteor的文档中查看:Accounts.onCreateUser docs.meteor.com

答案 2 :(得分:0)

这就是我的做法;匹配流星文档样式,不需要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;
});