Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/webpack/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js AJAX>;MongoDB查询只工作五次,然后服务器停止处理请求,我可以';不要刷新页面_Node.js_Mongodb_Reactjs_Express_Mlab - Fatal编程技术网

Node.js AJAX>;MongoDB查询只工作五次,然后服务器停止处理请求,我可以';不要刷新页面

Node.js AJAX>;MongoDB查询只工作五次,然后服务器停止处理请求,我可以';不要刷新页面,node.js,mongodb,reactjs,express,mlab,Node.js,Mongodb,Reactjs,Express,Mlab,我正在构建React/Express/MongoDB应用程序。我正在尝试进行实时搜索,在您键入时返回结果。服务器上的DB调用只工作五次,然后停止。然后我无法刷新浏览器,因此我认为服务器此时停止处理请求。我是否阻止了节点的事件循环 当我停止服务器时,所有未响应的响应都会显示在浏览器控制台中: POSThttp://localhost:3000/action/searchTextIndex net::ERR\u EMPTY\u响应 邮递http://localhost:3000/action/sea

我正在构建React/Express/MongoDB应用程序。我正在尝试进行实时搜索,在您键入时返回结果。服务器上的DB调用只工作五次,然后停止。然后我无法刷新浏览器,因此我认为服务器此时停止处理请求。我是否阻止了节点的事件循环

当我停止服务器时,所有未响应的响应都会显示在浏览器控制台中:

POSThttp://localhost:3000/action/searchTextIndex net::ERR\u EMPTY\u响应
邮递http://localhost:3000/action/searchTextIndex net::ERR\u EMPTY\u响应
邮递http://localhost:3000/action/searchTextIndex net::ERR\u EMPTY\u响应

这是我的AJAX调用。注意:这被限制为以800ms的最大频率呼叫

    search(query, dbCollection) {
        axios.post('/action/searchTextIndex', {
            dbCollection,
            query
        })
        .then(response => {
            console.log(response);
        })
        .catch(err => console.log(err))
    }
下面是express js代码:

    const searchTextIndex = (req, res, db) => {
        const { query, collection } = req.body;

        db.collection(collection).find(
            { $text: { $search: query } }
        )
        .project({ score: { $meta: 'textScore' } })
        .sort({ score: { $meta: 'textScore' } })
        .toArray((err, result) => {
            if (err) {
               console.log(err);
               res.send({ type: 'server_error' });
               return;
             }

             console.log(result);
             return;
        })
    }

为什么它只工作五次,即使我在按下搜索字段中的每个字符之前等待几秒钟?

问题似乎是服务器上没有发送快乐路径的响应。看看这是否有效。如果这还不能解决问题,请包括定义了
db
参数的代码,并将其作为参数传递给
searchTextIndex

constSearchTextIndex=(请求、恢复、数据库)=>{
const{query,collection}=req.body;
db.collection(collection.find)(
{$text:{$search:query}
)
.project({score:{$meta:'textScore'}})
.sort({score:{$meta:'textScore'}})
.toArray((错误,结果)=>{
如果(错误){
控制台日志(err);
res.send({type:'server\u error'});
返回;
}
控制台日志(结果);
//需要确保您发送了响应
返回res.json(结果);
})

}
哦,哇!如果请求没有响应5次,看起来请求被阻止了,或者服务器没有响应了?真奇怪/我不明白。。。但它是有效的。