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

Dynamic generated username for meteor app using Accounts

本文关键字:用户 动态 应用程序 流星      更新时间:2023-09-26

我想动态创建用户名,因此如果注册了新用户,则只需要姓名,姓氏和电子邮件。

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

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 中是唯一的。