从更新中返回错误

时间:2016-05-12 08:51:02

标签: javascript meteor

我从客户端调用updateUser:

Meteor.call('updateUser', userObject, function (error, result) {
  console.log(error, result);

  if (error) {
    Meteor._debug("updateUser", "Failed to update user: " + error);
  }
});

在客户端返回:“undefined 0”

在服务器和客户端上运行:

Meteor.methods({
  updateUser: function (userObject) {
    User.update({ _id: userObject._id }, { $set: userObject }, function (error, result) {
      console.log(error, result);

      if (error) {
        if (this.isSimulation) {
          console.log(error);
        } else {
          throw new Meteor.Error("updateUser", "failed to update user");
        }
      }
    });
  }
});

在服务器上返回:“notUnique”错误

客户端返回

:“undefined undefined”

如何将此错误从服务器返回到调用Meteor方法updateUser的客户端?我需要错误才能知道发生了哪种类型的错误。

2 个答案:

答案 0 :(得分:0)

可以将错误详细信息作为字符串发送到客户端。详细信息是Meteor.Error

的第三个可选参数

得到了问题。这是乐观的更新。客户端结果来自minimongo update的结果。服务器抛出异常。它没有到达客户端,因为客户端已经乐观地更新了,后来用服务器数据刷新了自己。要查看异常,请仅使用服务器方法。

答案 1 :(得分:0)

看起来你必须使用期货或承诺,因为它是异步的

function attemptUpdate(userObject) {
  return new Promise((resolve, reject) => {
    User.update({ _id: userObject._id }, { $set: userObject }, function (error, result) {
      console.log(error, result);

      if (error) {
        if (this.isSimulation) {
          console.log(error);
          resolve(result);
        } else {
          reject(Meteor.Error("updateUser", "failed to update user"));
        }
      }
    });
  });
}

Meteor.methods({
  async updateUser(userObject) {
    await attemptUpdate.call(this, userObject);
  }
});