当我将超时设置为5分钟时,model.find({})没有响应,但是当超时为1分钟时它响应

时间:2018-03-28 10:30:43

标签: node.js mongodb express mongoose mongoose-schema

我正在使用mongoose来列出mongodb中一个集合中的所有数据,但我希望响应在5分钟之后到来,但是当超时值为5分钟时它没有响应但是当超时为1分钟时它响应

router.get(routeIdentifier+'/list/:id', function(req, res, next) {
        model.find({}, function (err, objects) {
            setTimeout(function(){
                if (err) return res.send(err);            
                objects.push({id:req.params.id})
                return res.json(objects);
            },300000)       
        });
     })

1 个答案:

答案 0 :(得分:1)

据我所知,这主要是由于HTTP服务器超时。它在从数据库model发送响应之前超时。

根据此处的文档,默认超时为2分钟:https://nodejs.org/dist/latest-v9.x/docs/api/http.html#http_server_settimeout_msecs_callback

请注意ExpressJS位于内置NodeJS HTTP服务器的顶部。

尝试以下方法:

    let server = http.createServer( expressApp );

    server.setTimeout( 300000 );

这会将HTTP服务器超时初始化为5分钟。