Mongodb 过帐数据时获取超时错误

Mongodb 过帐数据时获取超时错误,mongodb,node.js,express,mongoose,Mongodb,Node.js,Express,Mongoose,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.createReadStr

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);
    }
  });
});
当我单击submit按钮时,出现以下错误

错误:发布/照片/新建超时 at Object.\u onTimeout(/home/nodeexmple/node\u modules/connect timeout/index.js:12:22) 在Timer.ontimeout(timers_uv.js:84:39)

请提供帮助。

您正在使用该模块,以便在页面加载时间超过X秒时(服务器端)向用户显示消息

很明显,上传页面可能占用的时间不止这些,因此您应该在上传路径中清除超时,如下所示:

app.post('/photos/new', function(req, res) {
  req.clearTimeout();
  ...
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');
                });
阅读有关its上连接超时的更多信息。

请参阅此答案

此外,您还可以使用上面Alex建议的req.clearTimeout()

我相信你的代码的这一部分正在产生你应该避免的问题

photos.save({
           filename: files.file.filename,
                   file: files.file.path
                 }, function(error, docs) {
              res.redirect('/photos');
         });
而是像这样使用:

app.post('/photos/new', function(req, res) {
  req.clearTimeout();
  ...
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');
                });
然后像这样:

app.post('/photos/new', function(req, res) {
  req.clearTimeout();
  ...
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');
                });
希望这能解决你的问题