Функции Azure анализируют данные формы с помощью node-formidable
Вот небольшая функция Azure, я пытаюсь получить поля формы сообщения, используя узел грозного.
module.exports = function (context, req, intable) {
var formidable = require('formidable');
var form = new formidable.IncomingForm(),
fields = [];
----> form.parse(context.req, function(err, fields, files) {
context.log(fields);
context.done();
return;
});
return;
};
В строке со стрелкой в коде выдается ошибка TypeError: req.on не является функцией. Не уверен, что делать, любая помощь будет оценена.
2 ответа
Поскольку вы используете готовые к использованию Azure, доступные пакеты вам не помогут, поскольку в классическом веб-сервере файл поступает в виде фрагмента на сервере, поэтому для извлечения данных на сервере используются "on" и "end". В случае функций Azure Azure проанализирует форму для вас и добавит в объект req.body, и этот объект будет JSON, а не какой-либо объект запроса, поэтому функции 'on' и 'end' не будут доступны.
Итак, вам нужно разобрать данные формы вручную.
Я работаю как в AWS, так и в Azure (обычно я использовал текстовые файлы для загрузки через AWS и Azure), поэтому я создал их до тех пор, пока не проанализировал данные формы, которые можно использовать для анализа своих собственных.
Вы можете использовать ту же функцию. Я обновил его на GitHub.
https://github.com/chandani-volansys/multipart-data-parser/blob/master/multipart.js
Метод, который вы вызываете здесь в огромном, ожидает объект req require('http') - однако объект запроса здесь не тот (как вы можете видеть, не имеет подобного req.on() или других методов). Я не достаточно знаком с этим пакетом, чтобы знать, есть ли способ предоставить тело запроса (что имеет этот объект req) и все еще анализировать или нет.
Подробности об объекте req, передаваемом в эту функцию, находятся здесь