gpt4 book ai didi

javascript - 如何使用 ES6 Symbol 处理 node.js 中的 new Error() ?

转载 作者:行者123 更新时间:2023-12-03 00:13:20 24 4
gpt4 key购买 nike

我正在使用 ES6 Symbol 在 node.js 中创建一个端点。示例

//ES6符号方法

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?
}

最佳答案

如果您想使用错误处理机制,您需要抛出该错误,而不仅仅是返回它。抛出的错误将成为被拒绝的 Promise,然后您可以直接在 Promise 上使用 .catch() 进行处理,或者如果您在异步函数中使用它,则可以使用 try/catch 进行处理。这是一个简化的示例:

function populate() {
// always resolves to undefined
return Promise.resolve(undefined)
}

const taskCreationMethod = {
someMethod() {
return {
storeCheckFunc: async function() {
let store = await populate() // always resolves undefined
if (!store) { // so it always fails
throw new Error("Store not found"); // throw error
}
}
};
}
}

// regular promise then().catch()
taskCreationMethod.someMethod().storeCheckFunc()
.then(res => console.log(res))
.catch(err => console.log("Error:", err.message)) // catch

// OR … async function
async function runit() {
try {
let s = await taskCreationMethod.someMethod().storeCheckFunc()
} catch (err) {
console.log("Error:", err.message)
}
}

runit()

关于javascript - 如何使用 ES6 Symbol 处理 node.js 中的 new Error() ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54626296/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com