我从客户端调用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
的客户端?我需要错误才能知道发生了哪种类型的错误。
答案 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);
}
});