У меня есть несколько сотен файлов csv, расположенных в ведре s3. Я создаю сервер, который будет извлекать эти файлы csv и обновлять мою базу данных с помощью Sequelize.
Я запускаю эту задачу как планировщик и иногда вижу эти ошибки. Это происходит не постоянно, поэтому я подозреваю, что это связано с Promises.
Вот код:
FilesNames состоит из списка имён файлов. Затем я использую csvtojson для чтения этих csv из потока и вставляю эти данные с помощью Sequlize.
fileNames.forEach(file => {
const csvFilePath = `${new_url}${file}`;
csv({
noheader: true,
})
.fromStream(request.get(csvFilePath))
.on('csv', (csvRow, rowIndex) => {
Hydrograph.create({
data: csvRow,
gaugeId: Number(file.slice(10, -4)),
percentille: PERCENTILLE[rowIndex],
type: 'GAUGE',
});
});
});
Это ошибка, которую я получаю. Опять же, эти ошибки появляются только иногда.
Unhandled rejection SequelizeDatabaseError: invalid input syntax for type numeric: "" at Query.formatError (/Users/leoqiu/apps/eflow-api/node_modules/sequelize/lib/dialects/postgres/query.js:363:16) at query.catch.err (/Users/leoqiu/apps/eflow-api/node_modules/sequelize/lib/dialects/postgres/query.js:86:18) at tryCatcher (/Users/leoqiu/apps/eflow-api/node_modules/bluebird/js/release/util.js:16:23) at Promise._settlePromiseFromHandler (/Users/leoqiu/apps/eflow-api/node_modules/bluebird/js/release/promise.js:512:31) at Promise._settlePromise (/Users/leoqiu/apps/eflow-api/node_modules/bluebird/js/release/promise.js:569:18) at Promise._settlePromise0 (/Users/leoqiu/apps/eflow-api/node_modules/bluebird/js/release/promise.js:614:10) at Promise._settlePromises (/Users/leoqiu/apps/eflow-api/node_modules/bluebird/js/release/promise.js:689:18) at Async._drainQueue (/Users/leoqiu/apps/eflow-api/node_modules/bluebird/js/release/async.js:133:16) at Async._drainQueues (/Users/leoqiu/apps/eflow-api/node_modules/bluebird/js/release/async.js:143:10) at Immediate.Async.drainQueues (/Users/leoqiu/apps/eflow-api/node_modules/bluebird/js/release/async.js:17:14) at runCallback (timers.js:781:20) at tryOnImmediate (timers.js:743:5) at processImmediate [as _immediateCallback] (timers.js:714:5)
Я пытаюсь выяснить, почему возникает эта ошибка? Почему происходит ошибка?
Согласно ошибке, вы пытаетесь вставить неверные данные в числовое поле. Чтобы получить дополнительную информацию или найти проблемную строку, добавьте .catch(console.info) после вашего метода .create.
Как я уже сказал выше, проблема возникает только в отдельных случаях. Это случается не все время. Передаются одни и те же данные, если что-то не так с числовым полем, то это должно происходить постоянно.





Каков твой вопрос? Хотите узнать, какой элемент вызывает исключение?