gpt4 book ai didi

node.js - AJAX > MongoDB 查询只工作了五次,然后服务器停止处理请求,我无法刷新页面

转载 作者:可可西里 更新时间:2023-11-01 10:38:08 24 4
gpt4 key购买 nike

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

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

POST http://localhost:3000/action/searchTextIndex net::ERR_EMPTY_RESPONSE
POST http://localhost:3000/action/searchTextIndex net::ERR_EMPTY_RESPONSE
POST http://localhost:3000/action/searchTextIndex net::ERR_EMPTY_RESPONSE

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

    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

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);

// need to be sure you send the response
return res.json(result);
})
}

关于node.js - AJAX > MongoDB 查询只工作了五次,然后服务器停止处理请求,我无法刷新页面,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52471208/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com