Urlencoded форма в Express/nodejs (грозный)

Я использую node-formidable для обработки данных формы в приложении Express/Nodejs. Я отправляю POST-переменные из расширения POSTman Chrome. (кстати, http://httpbin.org/post работает нормально)

Если я использую multipart/form-data, все в порядке.

Если я использую urlencoded, обратный вызов form.parse никогда не срабатывает и блокирует все ответы. он просто блокирует метод post.

обязательно:

var formidable = require('formidable');
var http = require('http');
var util = require('util');

метод публикации:

app.post("/items",function(req,res){
    var form = new formidable.IncomingForm();
    form.parse(req,function(err,fields,files){
        console.log(fields);
        res.send("posted");
     });
});

экспресс-настройки:

app.use(express.json());
app.use(express.urlencoded());
app.use(express.multipart());
app.use(express.cookieParser());
app.use(express.static(__dirname + '/public'));
app.use(express.cookieSession({secret:"wow_so_secret_such_code_gud_layers"}));
app.use(passport.initialize());
app.use(passport.session());
app.use(express.methodOverride());

есть ли какой-нибудь трюк для использования urlencoded?

может быть важно;

{ 
  domain: null,
  _events: {},
  _maxListeners: 10,
  error: null,
  ended: false,
  maxFields: 1000,
  maxFieldsSize: 2097152,
  keepExtensions: false,
  uploadDir: '/var/folders/pl/xnl7cxpj075chytyf_t7f1480000gn/T/',
  encoding: 'utf-8',
  headers: null,
  type: null,
  hash: false,
  bytesReceived: null,
  bytesExpected: null,
  _parser: null,
  _flushing: 0,
  _fieldsSize: 0,
  openedFiles: [] 
}

как urlencoded, так и multipart возвращают значение null.


person Onur Özkan    schedule 17.12.2013    source источник
comment
Если вы используете formidable для анализа входящей формы, вам не нужно использовать multipart()   -  person vmx    schedule 18.12.2013
comment
@vmx удалил составную строку, но безрезультатно. снова то же самое.   -  person Onur Özkan    schedule 18.12.2013
comment
попробуйте добавить это: form.encoding = 'utf-8'; form.type = 'multipart';, прежде чем делать form.parse()   -  person vmx    schedule 18.12.2013
comment
также добавьте enctype="multipart/form-data" в тег формы html.   -  person vmx    schedule 18.12.2013
comment
см. рабочий пример: stackoverflow.com/a/20372845/1520518   -  person vmx    schedule 18.12.2013
comment
@vmx я пытаюсь использовать urlencoded, а не multipart. так что эти решения тоже не работают.   -  person Onur Özkan    schedule 18.12.2013
comment
Кстати, после того, как я удалю app.use(express.urlencoded()), он сработал, но по-прежнему не имеет значения form.type в объекте формы. и я думаю, что все еще есть некоторые проблемы с моими формами.   -  person Onur Özkan    schedule 18.12.2013
comment
Ссылка, которой я поделился, не требует использования multipart(), я упомянул, чтобы не использовать multipart   -  person vmx    schedule 18.12.2013