我有一个像这样的承诺。
const updateTheme = async rawTheme => {
try {
const existData = await Theme.findOne({ themename: rawTheme.themename });
if (!existData) {
return Promise.reject(Error(`Theme ${rawTheme.themename} not found.`));
}
Object.assign(existData, rawTheme);
const result = await existData.save();
return result;
} catch (err) {
return Promise.reject(err);
}
};
此函数更新mongoDB中的主题,如果找不到任何主题,则返回Promise.reject
。
我想创建一个使用updateTheme的函数。如果找不到主题,则会创建一个新主题。功能就是这样。
const updateTheme = async dbdata=> {
try {
let data = await dbServices.updateTheme(dbdata);
return Promise.resolve(data);
// Modify this function to catch an error from updateTheme and create a new theme
} catch (error) {
return Promise.reject(error);
}
}
我想要这样的东西吗?
await dbServices.updateTheme(dbdata)
.then(
// resolve logic
).catch(
// check reject error and write create new theme logic
)
但是,如果我们使用async-await,则任何错误将直接进入try...catch
块中。所以我的问题是,如何在.then.catch
块中捕获错误?