4

对不起我的英语不好。我使用包 useraccounts:bootstrap 进行登录、注册等。注册后如何将任意数据添加到 Meteor.users 集合。例如,我希望注册后的用户有一个值为“false”的字段“status”或带有注册时间的字段“time”。谢谢你。

4

3 回答 3

3

如果用户需要提供数据,您将需要自定义 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参数包含来自客户端的数据。

于 2016-05-06T14:35:59.387 回答
2

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 。此函数会将注册时间和状态分配给新创建的帐户。查看 Meteor 的文档:Accounts.onCreateUser docs.meteor.com

于 2016-05-06T11:30:46.500 回答
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;
});
于 2018-10-08T12:00:16.863 回答