【问题标题】:Accounts.createUser on server does not return response to client服务器上的 Accounts.createUser 不向客户端返回响应
【发布时间】:2015-02-20 17:25:15
【问题描述】:

我正在尝试使用服务器上的 Meteorjs 帐户来创建一个新用户,然后向他们发送一封电子邮件以设置他们的初始密码。这个想法是管理员用户可以添加新用户。

我可以成功添加新用户(如果我登录,我可以在服务器控制台中看到新用户 ID),但该 ID 永远不会返回给客户端。这是我的服务器端

Meteor.methods({
  createNewUser: function(email){
    return Accounts.createUser({email: email});
  }
});

以及相关的客户端JS:

if (isNotEmpty(email) && isEmail(email)) {
  Meteor.call("createNewUser", email, function(ret){
    if (typeof ret.message !== 'undefined') {
      if (ret.message === 'Email already exists. [403]') {
        alert("exists");
      } else {
          alert("not created");
      }
    } else {
      Accounts.sendEnrollmentEmail(ret, function(err){
        if (err){
          alert("email didn't get sent");
        } else {
          alert('success');
        }
      });
    }
  });
}

我在浏览器控制台中得到了这个:

Exception in delivering result of invoking 'createNewUser': TypeError: Cannot read property 'message' of undefined

可能值得注意的是,如果我尝试连续两次提交相同的电子邮件地址,我也会收到“存在”警报,因此错误会很好地返回给客户端。

【问题讨论】:

    标签: meteor createuser


    【解决方案1】:

    回调中的第一个参数始终是错误对象。 如果一切正常,error 等于 null。

    Meteor.call('createNewUser', email, function( error, result ){
       if( error ){
          console.error("ERROR -> ", error )
       }else{
           console.log("User was created!")
       }
    })
    

    【讨论】:

    • 我妈没看到你的回答
    • “在传递调用'createNewUser'的结果时出现异常:TypeError: undefined is not a function” - 没有给我太多对那个错误有用的信息。
    • 想通了。需要在服务器上调用 sendEnrollmentEmail。原始答案完美地回答了原始问题,谢谢!
    【解决方案2】:

    但该 ID 永远不会返回给客户端。

    那是因为您在客户端上没有任何 console.log。流星呼叫也看起来不正确。

    if (isNotEmpty(email) && isEmail(email)) {
      Meteor.call("createNewUser", email, function(err,result){
        if (typeof ret.message !== 'undefined') {
          if (ret.message === 'Email already exists. [403]') {
            alert("exists");
          } else {
              console.log(result) //here for example you should get the id
          }
        } else {
          Accounts.sendEnrollmentEmail(ret, function(err){
            if (err){
              alert("email didn't get sent");
            } else {
              alert('success');
            }
          });
        }
      });
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-07-19
      • 1970-01-01
      • 2021-03-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-11-22
      相关资源
      最近更新 更多