Как обрабатывать неявные ошибки внутри парусов. js помощников? - PullRequest
0 голосов
/ 02 мая 2020

Я пытаюсь выяснить, как работает обработка ошибок в Sails. js. К сожалению, примеры кода в документации не охватывают этот вариант использования.

Проблема в том, что я продолжаю получать эту ошибку:

UsageError: `.intercept()` handler returned `undefined`, but this should never happen.
Regardless, here is a summary of the original underlying error:

Теперь все, что я пытаюсь сделать, это вызвать помощника и если это не удается, то я хочу поймать ошибку (любую), зарегистрировать ее и запустить некоторый код. Если бы я не использовал Sails, но обычные обещания, я бы обработал это так:

await helper().catch((err) => { // run some code }

В Sails я мог бы использовать .intercept () вместо .catch ()

Мой код выглядит следующим образом:

// ExportController.js

        const csv = await sails.helpers.files.convertToCsv(data)
        .intercept((err) => {
            sails.log.error(err)
            req.addFlash('error_messages', 'Error parsing data to csv!')
            return res.redirect(`/`);
        })

// convert-to-csv.js

    if (!Array.isArray(inputs.data)) {
      throw new Error('invalid inputs.data type: ' +  typeof inputs.data)
    };

Теперь, как мне избежать этой ошибки? примеры кода показывают только случаи, когда ошибки, явно добавленные в объект exits, обрабатываются, но не для общей обработки ошибок. В документации говорится, что если аргумент фильтра

не предоставлен, ВСЕ ошибки будут перехвачены.

Или это верно только для БД запросов? Поскольку раздел .intercept () do c находится в этой подкатегории.

1 Ответ

0 голосов
/ 03 мая 2020

Вы можете использовать «throw 'errorCode';» например, на вашем помощнике и ... convertToCsv (data) .intercept ('errorCode', 'yourExit'). intercept ('otherCode', 'otherExit') для каждого кода ошибки или используйте .tolerate (). за какое-то другое выброшенное сообщение от помощника.

...