new error_1.MongoTopologyClosedError());

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