如何在 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,因此您不需要在导入时对其进行解构。希望对您有所帮助。
我是 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,因此您不需要在导入时对其进行解构。希望对您有所帮助。