Javascript 如何在Node.js中要求自定义类?

Javascript 如何在Node.js中要求自定义类?,javascript,node.js,Javascript,Node.js,我有database.js我的database类在哪里 database.js class Database { constructor() { this.uri = "mongodb+srv: ....." } get_uri = () => { return this.uri } connect = async client => { await client.connec

我有
database.js
我的
database
类在哪里

database.js

class Database {
    constructor() {
        this.uri = "mongodb+srv: ....."
    }
    get_uri = () => {
        return this.uri
    }
    connect = async client => {
        await client.connect();
        console.log("Successfully connected!")
        return client;
    }

    disconnect = async client => {
        await client.close();
    }
}

exports.Database = new Database()
const {MongoClient} = require('mongodb');
const db = require("./server/database");
const connect = db.connect(); // TypeError: db.connect is not a function
server.js

class Database {
    constructor() {
        this.uri = "mongodb+srv: ....."
    }
    get_uri = () => {
        return this.uri
    }
    connect = async client => {
        await client.connect();
        console.log("Successfully connected!")
        return client;
    }

    disconnect = async client => {
        await client.close();
    }
}

exports.Database = new Database()
const {MongoClient} = require('mongodb');
const db = require("./server/database");
const connect = db.connect(); // TypeError: db.connect is not a function
文件

server -|
        |-database.js

package.json
server.js
打印的db变量
用于上面的我的代码

[0] Database object:
[0] {
[0]   Database: Database {
[0]     get_uri: [Function: get_uri],
[0]     connect: [AsyncFunction: connect],
[0]     disconnect: [AsyncFunction: disconnect],
[0]     uri: 'mongodb+srv:......'
[0]   }
[0] }
编辑1

苏尔卡,刚刚做了这个:

const {MongoClient} = require('mongodb');
const { Database } = require("./server/database");
const connect = Database.connect();
仍然
TypeError:无法读取未定义的属性“connect”

但它引发了一个错误,我将其作为上述评论。我做错了什么


谢谢大家!

您的导入应该是
const{Database}=require(“./server/Database”)而不是
const db=require(“./服务器/数据库”)

这是因为您是通过
exports.Database=..
而不是
exports=..

编辑(供您编辑): 我不确定这是否有区别,但您应该考虑使用这样的单例:

类数据库{
构造函数(){
this.uri=“mongodb+srv:…”
}
静态get实例(){
如果(!Database._instance)数据库。_instance=new Database();
返回数据库。\u实例;
}
获取uri=()=>{
返回this.uri
}
连接=异步客户端=>{
等待client.connect();
日志(“已成功连接!”)
返回客户;
}
断开连接=异步客户端=>{
等待客户端。关闭();
}
}
exports.Database=数据库
然后在server.js中

const{MongoClient}=require('mongodb');
const{Database}=require(“./server/Database”);
const db=Database.instance;

const connect=db.connect(someClientMustGoHere);//您的文件是ist Database.js而不是Database.js。使用const db=require(“./服务器/数据库”);另外,db.connect()是一个异步函数。您可能需要等待它。@SoulKa噢,这是database.js,已编辑!你能试着打印出server.js中的db对象吗?请参见编辑1关于粗体编辑-仍然“无法读取未定义的
的属性“connect”,并且
打印的db变量”是相同的。你忘记了将客户端传递给
连接(客户端)
函数!它必须是
db.connect(someClient)
可能会将客户端分配给数据库实例,以便可以通过
此访问它。客户端
?工作正常,非常感谢