如何在 Express 中使用 static class

How to use static class in Express

我是 JavaScript 世界的新手,我想使用 MEAN 堆栈创建一个网络应用程序。

为了让我的文件井井有条(至少一点点),我想将所有 MongoDb 部分保留在静态 class 中,并在我的 app.js 文件中调用它当我需要的时候。

这里有一个 C# 的例子(我比较熟悉):

public static class Test
{
    public static void PrintHello()
    {
        Console.WriteLine("Hello world");
    }
}


static void Main(string[] args)
{
    Test.PrintHello();
}

app.js

let express = require('express');
let app = express();
// parser nécessaire pour récupérer les valeurs en mode POST
let bodyParser = require("body-parser");
const {MongoRequest} = require('./MongoRequest.js');
app.use(bodyParser.urlencoded({ extended: true }));

app.listen(8888, () => {
    console.log('Server running at http://localhost:8888/')
});

app.get('/module/getAll', async (req, res) => { // GET
    try {
        console.log("Page d'accueil");
        let a = await MongoRequest.GetAllModules();
        console.log(a);
        res.send(a);
    } catch (error) {
        console.error(error);
        res.send(error.message);
    }
});

MongoRequest.js

class MongoRequest {

    static async CreateMongoClient(){
        let mongo = require('mongodb').MongoClient;
        let path = "mongodb://localhost:27017/GestionHeures";
        let client = new mongo(path);
        return client;
    }

    static async GetAllModules(){
        
        let retour;

        try {
            let client = await CreateMongoClient();
            client = await client.connect();
            
            let db = client.db("GestionHeures");

            retour = await db.collection("modules").find().toArray();

            //prom.then( r => {retour = r;});
            console.log("OK");
        } catch (e) {
            console.error(e);
        } finally {
            client.close();
        }
        return retour;
    }
}

module.exports = MongoRequest;

当我尝试这样做时,出现了这个错误:

TypeError: Cannot read properties of undefined (reading 'GetAllModules')

我的代码有什么问题

提前致谢

PS:如果您有任何建议让我的代码井然有序。我很乐意接受它们

首先,欢迎来到JavaScript!

您的 CommonJS 导入 const {MongoRequest} = require('./MongoRequest.js'); 似乎与您的导出不匹配

尝试像这样导入:

const MongoRequest = require('./MongoRequest.js');

由于您要导出整个 class,因此您不需要在导入时对其进行解构。希望对您有所帮助。