Meteor在使用Accounts.onCreateUser()时删除密码数据

Meteor在使用Accounts.onCreateUser()时删除密码数据,meteor,meteor-accounts,Meteor,Meteor Accounts,我使用{>loginButtons}模板和帐户密码创建了一个新用户,并成功登录,但当我注销并尝试使用我设置的密码重新登录时,出现了“用户未设置密码”错误 我的服务器文件夹中的accountsServer.js中有以下代码: Accounts.onCreateUser(function (user, options) { someCollection.insert({ name: user.username, elo: 1500, }); return user; })

我使用{>loginButtons}模板和帐户密码创建了一个新用户,并成功登录,但当我注销并尝试使用我设置的密码重新登录时,出现了“用户未设置密码”错误

我的服务器文件夹中的accountsServer.js中有以下代码:

Accounts.onCreateUser(function (user, options) {
  someCollection.insert({
    name: user.username,
    elo: 1500,
  });
  return user;
});
我在我的客户端文件夹中的accountsClient.js中设置了一个USERNAME\u ONLY配置选项:

Accounts.ui.config({
    passwordSignupFields: "USERNAME_ONLY"
});
有人能帮我吗?当我在Accounts.onCreateUser()函数中完全注释掉代码时,错误消失了,因此我认为这是问题的根源,但我不确定是什么原因造成的。

可能是因为:

默认的“创建用户”功能只是将
options.profile
复制到 新的用户文档。调用onCreateUser将覆盖默认值 钩子。这只能调用一次

因此,用户创建不再在注册之前复制用户中的选项此外,您的参数
选项
用户
似乎颠倒了

您可以通过这种方式重新添加此逻辑:

Accounts.onCreateUser(function (options, user) {
  someCollection.insert({
    name: user.username,
    elo: 1500,
  });
  if (options.profile)
    user.profile = options.profile;
  return user;
});

虽然这句话是正确的,但我认为关于简介的建议与问题无关。
username
字段不在配置文件中,密码被散列并存储在
services.password.bcrypt
中。将问题中的
选项
用户
倒置肯定会导致问题。someCollection中的插入可能会失败并导致异常。因此,将不会创建用户。我的问题是,用户是否存在于用户集合中?谢谢,这正是我的问题