[英]How do I require my custom class in Node.js?
I have database.js
where my Database
class is.我有
database.js
,我的Database
class 在哪里。
database.js数据库.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()
server.js服务器.js
const {MongoClient} = require('mongodb');
const db = require("./server/database");
const connect = db.connect(); // TypeError: db.connect is not a function
files
server -|
|-database.js
package.json
server.js
printed db variable
for my code above为我上面的代码
printed db variable
[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] }
EDIT 1编辑 1
Soulka, just done this: Soulka,刚刚做了这个:
const {MongoClient} = require('mongodb');
const { Database } = require("./server/database");
const connect = Database.connect();
and still TypeError: Cannot read property 'connect' of undefined
仍然是
TypeError: Cannot read property 'connect' of undefined
But it raises an error, which I put as a comment above.但它引发了一个错误,我将其作为评论放在上面。 What I am doing wrong?
我做错了什么?
Thank you!谢谢!
Your import should be const { Database } = require("./server/database");
您的导入应该是
const { Database } = require("./server/database");
instead of const db = require("./server/database");
而不是
const db = require("./server/database");
This is because you are exporting via exports.Database =..
not exports =...
这是因为您是通过
exports.Database =..
而不是exports =...
的
EDIT (for your edit): I'm not sure if it makes a difference, but you should think about using a singleton like this:编辑(用于您的编辑):我不确定它是否有所作为,但您应该考虑使用这样的 singleton:
class Database {
constructor() {
this.uri = "mongodb+srv: ....."
}
static get instance() {
if (!Database._instance) Database._instance = new Database();
return Database._instance;
}
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 = Database
And then in server.js然后在 server.js
const {MongoClient} = require('mongodb');
const { Database }= require("./server/database");
const db = Database.instance;
const connect = db.connect( someClientMustGoHere ); // <---- THIS LINE
EDIT 2: Fixed the last line of server.js to be const connect = db.connect( someClientMustGoHere );
编辑 2:将 server.js 的最后一行修复为
const connect = db.connect( someClientMustGoHere );
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.