Парсер Nearley запускается 36 раз, когда принимает огромную строку с «\ n» через запрос POST.
Я использую JavaScript для простого запроса POST, который получает огромные блоки строки. Затем я беру эту строку и пропускаю ее через свой синтаксический анализатор Nearley.
При форматировании, как показано ниже, и запуске моего парсера все в порядке.
const sampleResRej = `HX1V03E 000000000026548985456620210325
HXH45741081158426983554B0177182HCPP015326
HXTA084C 0028700444120611 VJ7V21
HXTE542C 0011550144498611356 VJ7
HXTZ101C 0025750175321611 VJ7V21
HXH5098919292B78546555520155555HCPP266510 K
HXTA084A 0028709875600713 VJ7V21
HXTE542A 0011554522200713356 VJ7
HXTG370A 0020255555200713 VJ7
HX90000066000000000001290000000 `
Однако из-за разрывов новой строки мой запрос POST не примет его.
Чтобы преодолеть это, я просто добавляю "\n" в конце каждой строки вручную и объединяю все в одну длинную строку.
Однако теперь мой парсер запускается 36 раз, несмотря на то, что отправил строку через мой запрос POST только один раз.
Я даже использовал console.log, чтобы проверить, проходит ли он через мой почтовый запрос несколько раз, но это не так.
Почему он это делает и, что более важно, как это исправить? Имейте в виду, что добавление "\n" было единственным решением, которое я мог придумать. Если у кого-то есть что-то получше, я открыт для предложений.
Вот код моего запроса POST:
app.post('/responseInfo', (req, res) => {
console.log("This is app.js RESPONSE .d", req.body.d)
// This returns the parsed req.body for Insomnia
const responseClaim = responseClaimParser(req.body.d);
res.set({
'Content-type': 'application/octet-stream',
'Content-disposition': 'attachment; filename=file.txt',
})
res.send(responseClaim);
})
Вот код моего парсера Nearley:
const parseResponseClaim = function (responseClaim) {
try {
parser.feed(responseClaim)
return parser.results
} catch (e) {
console.log(e.message);
}
}