Извлечение данных формы Node.js

#javascript #node.js #logging #express

#javascript #node.js #ведение журнала #экспресс

Вопрос:

Нефритовый файл:

 form(method="post", action="/upload", enctype="multipart/form-data")
      input(type="file", name="logName")
      input#promptNumErrors(type="number", name="numErr", placeholder="Number of Errors")
      button(type="submit") Upload
 

Index.js:

 var express = require('express');
var router = express.Router();

/* GET home page. */
router.get('/', function (req, res) {
    res.render('fileUpload', { title: 'Log File Viewer'});
});


var formidable = require('formidable'),
    fs = require('fs'),
    util = require('util'); //Used to print out everything about the log file


/* POST the file upload */
router.post('/upload', function (req, res) {

    var form = new formidable.IncomingForm();

    form.parse(req, function (err, fields, files) {

        fs.readFile(files.logName.path, function (err, data) {
            if (err) throw err;


            // TODO: Getting form value
            var numError = req.body.numErr;
            console.log(numError);


            var reDiaBtoa = /^([[^]]*]) (w ?) ([[^]]*]) (([^)]*)) (.*)$/gm;
            var outputToDisplay = " ";


            // Check to see if regex string works
            if (reDiaBtoa.test(data)) {

                var array = data.toString().split('n');

                for (l in array) {

                    var logArray = (array[l]);

                }

                // Use numPrompt to retrieve user input for numErr
                var numPrompt = 10;

                // Reverse the array so the most recent errors will show
                var newArray = array.reverse();
                var match;
                //Count the number of errors in the log file
                var countErrors=0;
                var numCount = (countErrors-numPrompt);

                for (var j = -1; j <= newArray.length; j  ) { // Since newArray[0] contains an empty string


                    while ((match = reDiaBtoa.exec(newArray[j])) != null) {

                        if (match.index === reDiaBtoa.lastIndex) {
                            reDiaBtoa.lastIndex  ;
                        }

                        if (match[2] === "ERROR") {

                            countErrors  ;

                            res.write('<p>'   "Time "   match[1]   '<br/>');
                            res.write("Thread Name: "   match[3]   '<br/>');
                            res.write("Source name amp; line number: "   match[4]   '<br/>');
                            res.write("Log Message: "   match[5]   '<br/>');
                            res.write('--------------------------------------'   '</p>');

                        }
                    }
                }
                console.log(countErrors);
            }
        })
    });
});
 

Он продолжает говорить, что NumError не определено всякий раз, когда я запускаю программу. Я могу прочитать ввод файла, но не ввод числа. Есть идеи?

ОБНОВЛЕНИЕ: это полная index.js досье.

Комментарии:

1. Что ж, похоже, вы используете express.js , но какую версию вы используете? Если вы используете 4, то убедитесь, что вы правильно настроили промежуточное программное обеспечение body-parser. Нужно немного больше информации, чтобы дать вам окончательный ответ.

2. Для отладки этого я бы проверил переменную req.body и заглянул в HTML, который генерирует Jade, возможно, что-то не так с вашим шаблоном.

3. Я использую последнюю версию, поэтому 4 я считаю. Но для некоторого контекста я пытаюсь загрузить файл журнала, а затем проанализировать ошибки. Предполагается, что ввод числа извлекает введенный пользователем номер, а затем отображает некоторые данные … Однако я даже не могу показать его значение после нажатия кнопки загрузки с помощью консоли. инструкция журнала.

4. Если вы разместите свой полный index.js , я должен быть в состоянии воспроизвести проблему и дать ответ.

5. Я опубликовал полный index.js @Крислако