Как обработать новый Error () в node.js с помощью символа ES6? - PullRequest
0 голосов
/ 11 февраля 2019

Я создаю конечную точку в node.js, используя символ ES6.Пример

// Метод символов 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?
 }

1 Ответ

0 голосов
/ 11 февраля 2019

Вам нужно 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()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...