最新消息:雨落星辰是一个专注网站SEO优化、网站SEO诊断、搜索引擎研究、网络营销推广、网站策划运营及站长类的自媒体原创博客

如何处理使用ES6符号的Node.js新的错误()?

运维笔记admin26浏览0评论

如何处理使用ES6符号的Node.js新的错误()?

如何处理使用ES6符号的Node.js新的错误()?

我创建使用ES6符号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?
 }
回答如下:

你需要throw该错误不只是return它,如果你想使用的错误处理机制。抛出的错误将成为被拒绝的承诺,你可以接着用.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()
发布评论

评论列表(0)

  1. 暂无评论