我正在尝试捕获可能在异步函数中抛出的错误。
我尝试过使用光纤软件包,但在安装此软件包后,应用程序将不会开始提供此错误:
=>错误阻止了启动:
构建应用程序时:
node_modules / fibers / build.js:1:15:意外的令牌ILLEGAL
所以我放弃了这个包(这也意味着Future
类)......
我还尝试用Meteor.wrapAsync
包装回调函数,但这也不起作用。
这是我正在使用的代码:
try {
Meteor.users.update({
_id: this.user_id
},{
$set: {first_name: "test"}
},{
multi: false
}, function(error, response){
if(response < 1)
throw "user could not be updated!";
});
console.log('user updated');
}
catch(error) {
console.log('catched');
console.error(error);
}
由于回调函数是异步的,因此不会捕获它,因为在抛出错误时catch块代码已经运行。我只想找到一种方法来捕捉我抛出的错误。
答案 0 :(得分:1)
在服务器上,collection.update
已经可以同步使用。所以你需要做的就是:
try {
var documentsAffected = Meteor.users.update({
_id: this.user_id
},{
$set: {first_name: "test"}
},{
multi: false
});
if (documentsAffected < 1) {
throw new Error("user could not be updated!");
}
console.log("user updated");
} catch (error) {
// will also catch exceptions thrown by Meteor.users.update
console.log("caught an error!");
console.error(error);
}