即使有try catch块,仍然得到Unhandled promise拒绝



我一直得到以下错误:

UnhandledPromiseRejectionWarning:未处理的承诺拒绝。这个错误要么是由于在没有catch块的异步函数内部抛出,要么是由于拒绝了没有使用.catch()处理的承诺。要在未处理的承诺拒绝时终止节点进程,请使用CLI标志--unhandled-rejections=strict(参见https://nodejs.org/api/cli.html#cli_unhandled_rejections_mode)。(拒绝id: 2)

在查找了一些解决方案后,我所要做的就是把我的代码放在一个try catch块中,你可以在下面看到,但我仍然得到这个错误,我做错了什么?

我正在尝试更新列并将其中的任何数组设置为空数组。

Parse.Cloud.job("updateFollowedBy", async (request) => {
try {
var emptyArray = [];
let date = new Date();
let query = new Parse.Query("Categories");

const results = await query.find({useMasterKey:true});

results.forEach(object => {
if (object.get("followedBy")) {
object.set("followedBy", emptyArray);
}
});
Parse.Object.saveAll(results);  
return ("Successfully updated column on " + date); 
} 
catch(e) {
console.log(e);
}
});

未处理的拒绝承诺可能来自Parse.Object.saveAll()函数,因为您没有等待它。试一试:

Parse.Cloud.job("updateFollowedBy", async (request) => {
try {
var emptyArray = [];
let date = new Date();
let query = new Parse.Query("Categories");

const results = await query.find({useMasterKey:true});

results.forEach(object => {
if (object.get("followedBy")) {
object.set("followedBy", emptyArray);
}
});
await Parse.Object.saveAll(results);
// You might want to pass { useMasterKey: true } option to make it work without exception: 
//await Parse.Object.saveAll(results, { useMasterKey: true });
return ("Successfully updated column on " + date); 
} 
catch(e) {
console.log(e);
}
});

最新更新