Javascript 如何使用ES6符号处理node.js中的新错误()?
我正在node.js中使用ES6符号创建端点。范例 //ES6符号法Javascript 如何使用ES6符号处理node.js中的新错误()?,javascript,node.js,mongodb,express,Javascript,Node.js,Mongodb,Express,我正在node.js中使用ES6符号创建端点。范例 //ES6符号法 const taskCreationMethod = { [Symbol.taskMethod]() { return { storeCheckFunc: async function(storeId, employeeId) { let store = await resourceModel["stores"].findById(storeId)
const taskCreationMethod = {
[Symbol.taskMethod]() {
return {
storeCheckFunc: async function(storeId, employeeId) {
let store = await resourceModel["stores"].findById(storeId).populate(references["stores"]);
if(!store) {
return new Error("Store not found");
}
let employeeCheck = _.find(store.employees, (empObj) => {
return empObj._id == employeeId
})
if(!employeeCheck) {
return new Error("Employee not found");
}
return employeeCheck;
}
};
}
}
//终点
export const taskCreation = async(req, res) => {
const storeCheck = await taskCreationMethod[Symbol.taskMethod]().storeCheckFunc(req.body.store, req.body.assigned_to);
// here How can I handle return with Error Response?
}
如果要使用错误处理机制,则需要抛出该错误,而不仅仅是返回该错误。抛出的错误将成为被拒绝的承诺,您可以直接在承诺上使用
.catch()
,或者在异步函数中使用try/catch
来处理。下面是一个简化的示例:
函数填充(){
//始终解析为未定义
返回承诺。解决(未定义)
}
const taskCreationMethod={
someMethod(){
返回{
storeCheckFunc:异步函数(){
let store=wait populate()//始终解析未定义的
如果(!store){//那么它总是失败
抛出新错误(“未找到存储”);//抛出错误
}
}
};
}
}
//定期承诺然后()捕获
taskCreationMethod.someMethod().storeCheckFunc()
.then(res=>console.log(res))
.catch(err=>console.log(“Error:,err.message))//catch
//或…异步函数
异步函数runit(){
试一试{
让s=等待taskCreationMethod.someMethod().storeCheckFunc()
}捕捉(错误){
日志(“错误:”,错误消息)
}
}
runit()
您的问题并不完全清楚async
函数通常通过抛出(将拒绝函数返回的承诺)或手动返回被拒绝的承诺来返回错误。使用try
和catch
捕获抛出的错误。@jfriend00此处我返回所有结果,并返回新错误();在我处理完这个错误后,我如何处理这个错误响应。我试过了,也试过了,你了解承诺的基本错误报告模型吗?如果没有,请继续阅读,因为异步
函数总是返回一个承诺,该承诺会被错误拒绝或用值解决。从中挑选一个,并将其用于所有可能的返回情况。对于错误,您应该拒绝承诺,可以使用抛出新错误(…)
或返回承诺。拒绝(新错误(…)
。然后调用方将使用someFunc().Then().catch()
获取值或查看错误。请阅读错误和承诺。