Ошибка тайм-аута при публикации данных - PullRequest
1 голос
/ 21 ноября 2011

js.Я пытаюсь создать загрузку файла, используя node.js и mongodb. Я получаю сообщение об ошибке тайм-аута при публикации данных. Код, который я использую:

app.post('/photos/new', function(req, res) {
  var photo = new Photo();
  req.form.complete(function(err, fields, files) {
    if(err) {
      next(err);
    } else {
      ins = fs.createReadStream(files.file.path);
      ous = fs.createWriteStream(__dirname + '/static/uploads/photos/' + files.file.filename);
      util.pump(ins, ous, function(err) {
        if(err) {
          next(err);
        } else { photos.save({
           filename: files.file.filename,
                   file: files.file.path
                 }, function(error, docs) {
              res.redirect('/photos');
         });
        }
      });
      //console.log('\nUploaded %s to %s', files.photo.filename, files.photo.path);
      //res.send('Uploaded ' + files.photo.filename + ' to ' + files.photo.path);
    }
  });
});

При нажатии кнопки «Отправить» я получаю следующую ошибку.

Ошибка: тайм-аут POST / фотографии / новый в Object._onTimeout (/home/nodeexmple/node_modules/connect-timeout/index.js:12:22) at Timer.ontimeout (timers_uv.js: 84: 39)

Пожалуйста, помогите.

Ответы [ 2 ]

1 голос
/ 02 февраля 2012

смотри этот ответ ...

Ошибка: ошибка синтаксического анализатора, проанализировано 0 из 4344 байтов (Node.js)

Также вы можете использовать req.clearTimeout (), как предложено выше alessioalex.

Я верю, что эта часть вашего кода создает проблемы, которых вы должны избегать.

photos.save({
           filename: files.file.filename,
                   file: files.file.path
                 }, function(error, docs) {
              res.redirect('/photos');
         });

Вместо этого используйте так:

var post = new Post();
      post.filename=files.file.filename;
      post.file=files.file.path;

А потом что-то вроде этого:

post.save(function(err) {
                   if (err)
                return postCreationFailed();
                   req.flash('info', 'photos Succesfully Uploaded');
               res.redirect('were u want to redirect');
                });

Надеюсь, это решит вашу проблему.

1 голос
/ 21 ноября 2011

Вы используете модуль connect-timeout , который показывает сообщение вашим пользователям, если загрузка страницы занимает более X секунд (на стороне сервера).

Очевидно, что на странице загрузки может потребоваться больше, чем это, поэтому в маршруте загрузки вы должны очистить время ожидания следующим образом:

app.post('/photos/new', function(req, res) {
  req.clearTimeout();
  ...

Подробнее о тайм-ауте соединения можно узнать на странице github .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...