【发布时间】:2022-01-23 16:35:53
【问题描述】:
我收到此错误MongoExpiredSessionError: Cannot use a session that has ended。
我已经尝试过类似问题中提出的答案,他们主要建议使用await 关键字。但正如您将在下面的代码中看到的那样,我已经为我的所有数据库函数设置了该关键字。
我正在使用代理来连接服务器和客户端(React)。 有时它可以正常工作,但是当我更新客户端中的某些代码时,由于某种原因,服务器会抛出此错误。然后,当我在服务器文件中编辑某些内容时,它又开始正常工作(直到我在客户端中编辑某些内容)。我猜问题在于我使用的是代理。
我关注了this tutorial,了解如何使用节点 js 服务器设置 React 应用程序。如果有更好的选择,请告诉我。
这是我的代码:
app.post("/getSubscribers", (req, res) => {
var ssn = req.session;
req.on("close", function(err1){
console.log("Connection closed (getSubscribers)");
console.log(err1);
})
if(!ssn.logged_in){
res.send(JSON.stringify("loggedout"));
}else{
(async () => {
try{
await client.connect();
console.log("1 (getSubscribers)");
const db = await client.db("data");
console.log("2 (getSubscribers)");
const collection = await db.collection("subscribers");
console.log("3 (getSubscribers)");
const query = {user_id: ssn.user_id};
console.log("4 (getSubscribers)");
const cursor = await collection.find(query);
console.log("5 (getSubscribers)");
const result = await cursor.toArray();
console.log("6 (getSubscribers)");
const count = await cursor.count();
console.log("7 (getSubscribers)");
const data = {data: result, count: count}
console.log("8 (getSubscribers)");
res.send(JSON.stringify(data));
console.log("9 (getSubscribers)");
}catch(err){
console.log("ERROR (getSubscribers)");
console.log(err);
}finally{
console.log("Closing (getSubscribers)")
await client.close();
}
})();
}
});
这是错误信息:
[0] 1 (getSubscribers)
[0] 2 (getSubscribers)
[0] 3 (getSubscribers)
[0] 4 (getSubscribers)
[0] 5 (getSubscribers)
[0] ERROR (getSubscribers)
[0] MongoExpiredSessionError: Cannot use a session that has ended
[0] Closing (getSubscribers)
有时它停在#5,有时停在#6。
正如我所提到的,问题可能与服务器的设置方式有关,请查看链接并告诉我这是设置服务器的好方法还是我应该采取不同的方式。
【问题讨论】:
标签: node.js reactjs mongodb express proxy