使用帐户为流星应用程序动态生成的用户名

Dynamic generated username for meteor app using Accounts

我想动态创建用户名,所以如果注册新用户,只需要名字、姓氏和电子邮件。

这就是我为新创建的用户设置用户名的方式。

Accounts.onCreateUser(function (options, user) {
    user.username   = options.profile.name.toLowerCase();
});

如果我想创建一个具有相同名称的用户,这显然会给我带来问题。这将导致错误 Username already exists。 所以我正在寻找一些想法如何在这种情况下进行。也许可以在姓氏的第一个字符或末尾添加一个递增的数字。

但是对于所有这些,我不知道在哪里实现它,因为必须有一个循环来测试用户名...

是的,您需要在提交用户名之前针对现有用户进行测试。让我们使用旧 AOL 样式的序号:

Accounts.onCreateUser(function (options, user) {
  let baseUsername = options.profile.name.toLowerCase();
  let user.username = baseUsername;
  let i=0;
  while ( Meteor.users.findOne({ username: user.username }) ){ // look for an existing user with the same username
    i++;
    user.username = baseUsername + i.toString();
  }
});

您需要确保您的 username 键已编入索引,并且在 mongodb 中是唯一的。