I am creating a card website and I have an absurd problem. This comes from the server side of two functions: one that I use to update the user’s credits on the homepage and the other to display new packs that an admin has added, also on the homepage.
app.post('/set_admin_pack', async function(req,res){
const packs = req.body;
const pwmClient = await client.connect();
await pwmClient.db("PWM").collection("AdminPacks").insertOne({name: packs.name, cost: packs.cost, imgpath: packs.imgpath, rarity:packs.rarity});
res.send(packs);
await client.close();
})
app.get('/get_admin_packs', async function(req,res){
const pwmClient = await client.connect();
const adm_packs = await pwmClient.db("PWM").collection("AdminPacks").find().toArray();
console.log(adm_packs);
res.status(200).send(adm_packs);
await client.close();
})
app.post('/set_credits', async function(req, res){
const user = req.body;
console.log(user);
const pwmClient = await client.connect();
let userFound = await pwmClient.db("PWM").collection("Users").findOne({nome: user.name, password: user.password});
if(!userFound.credits)
await pwmClient.db("PWM").collection("Users").updateOne({_id:userFound.id}, {$set: {credits: 1000}});
res.status(201).json({id: userFound._id, credits: userFound.credits});
await client.close();
})
app.post('/get_credits', async function(req, res){
const user = req.body.id;
let objid = new ObjectId(user);
const pwmClient = await client.connect();
let userFound = await pwmClient.db("PWM").collection("Users").findOne({_id: objid});
res.status(200).json({_id: objid, credits: userFound.credits});
await client.close();
})
These are the functions that do not work, or rather, when I comment out the first two, the server-side functions that manage credits work correctly:
/*app.post('/set_admin_pack', async function(req,res){
const packs = req.body;
const pwmClient = await client.connect();
await pwmClient.db("PWM").collection("AdminPacks").insertOne({name: packs.name, cost: packs.cost, imgpath: packs.imgpath, rarity:packs.rarity});
res.send(packs);
await client.close();
})
app.get('/get_admin_packs', async function(req,res){
const pwmClient = await client.connect();
const adm_packs = await pwmClient.db("PWM").collection("AdminPacks").find().toArray();
console.log(adm_packs);
res.status(200).send(adm_packs);
await client.close();
})*/
app.post('/set_credits', async function(req, res){
const user = req.body;
console.log(user);
const pwmClient = await client.connect();
let userFound = await pwmClient.db("PWM").collection("Users").findOne({nome: user.name, password: user.password});
if(!userFound.credits)
await pwmClient.db("PWM").collection("Users").updateOne({_id:userFound.id}, {$set: {credits: 1000}});
res.status(201).json({id: userFound._id, credits: userFound.credits});
await client.close();
})
app.post('/get_credits', async function(req, res){
const user = req.body.id;
let objid = new ObjectId(user);
const pwmClient = await client.connect();
let userFound = await pwmClient.db("PWM").collection("Users").findOne({_id: objid});
res.status(200).json({_id: objid, credits: userFound.credits});
await client.close();
})
However, when I comment out the last two, the first two POST functions work correctly:
app.post('/set_admin_pack', async function(req,res){
const packs = req.body;
const pwmClient = await client.connect();
await pwmClient.db("PWM").collection("AdminPacks").insertOne({name: packs.name, cost: packs.cost, imgpath: packs.imgpath, rarity:packs.rarity});
res.send(packs);
await client.close();
})
app.get('/get_admin_packs', async function(req,res){
const pwmClient = await client.connect();
const adm_packs = await pwmClient.db("PWM").collection("AdminPacks").find().toArray();
console.log(adm_packs);
res.status(200).send(adm_packs);
await client.close();
})
/*app.post('/set_credits', async function(req, res){
const user = req.body;
console.log(user);
const pwmClient = await client.connect();
let userFound = await pwmClient.db("PWM").collection("Users").findOne({nome: user.name, password: user.password});
if(!userFound.credits)
await pwmClient.db("PWM").collection("Users").updateOne({_id:userFound.id}, {$set: {credits: 1000}});
res.status(201).json({id: userFound._id, credits: userFound.credits});
await client.close();
})
app.post('/get_credits', async function(req, res){
const user = req.body.id;
let objid = new ObjectId(user);
const pwmClient = await client.connect();
let userFound = await pwmClient.db("PWM").collection("Users").findOne({_id: objid});
res.status(200).json({_id: objid, credits: userFound.credits});
await client.close();
})*/
When none are commented out and I load the homepage, the server crashes with the following error:
C:UsersuserOneDriveDesktopnode jsexpressnode_modulesmongodblibsdamtopology.js:538
drainWaitQueue(topology[kWaitQueue], new error_1.MongoTopologyClosedError());
^
MongoTopologyClosedError: Topology is closed
at processWaitQueue (C:UsersuserOneDriveDesktopnode jsexpressnode_modulesmongodblibsdamtopology.js:538:46)
at Topology.selectServer (C:UsersuserOneDriveDesktopnode jsexpressnode_modulesmongodblibsdamtopology.js:294:9)
at retryOperation (C:UsersuserOneDriveDesktopnode jsexpressnode_modulesmongodbliboperationsexecute_operation.js:187:35)
at executeOperation (C:UsersuserOneDriveDesktopnode jsexpressnode_modulesmongodbliboperationsexecute_operation.js:140:26)
at process.processTicksAndRejections (node:internal/process/task_queues:95:5)
at async FindCursor._initialize (C:UsersuserOneDriveDesktopnode jsexpressnode_modulesmongodblibcursorfind_cursor.js:51:26)
at async FindCursor.cursorInit (C:UsersuserOneDriveDesktopnode jsexpressnode_modulesmongodblibcursorabstract_cursor.js:471:27)
at async FindCursor.fetchBatch (C:UsersuserOneDriveDesktopnode jsexpressnode_modulesmongodblibcursorabstract_cursor.js:503:13)
at async FindCursor.next (C:UsersuserOneDriveDesktopnode jsexpressnode_modulesmongodblibcursorabstract_cursor.js:228:13)
at async [Symbol.asyncIterator] (C:UsersuserOneDriveDesktopnode jsexpressnode_modulesmongodblibcursorabstract_cursor.js:159:34) {
[Symbol(errorLabels)]: Set(0) {}
}
Honestly, I don’t know how to solve the problem. I am a beginner in web programming and need help.
I can’t complain why when the code doesn’t work correctly