导出已在导出的函数中使用的变量



我正试图在一个单独的文件中初始化我的mongodb。我正在编写函数内部的初始化并导出该函数。现在,我还想导出在该函数中编写的数据库。我该怎么做?

我想做这样的事。

import { MongoClient } from 'mongodb';
import config from '../../config';
import logger from '../../logger';
const connectDB = async () => {
const client = new MongoClient(config.dbUri, {
userNewUrlParser: true,
useUnifiedTopology: true,
});
try {
await client.connect();
const db = client.db('sample_mflix');
logger.info('Connected to Database');
} catch (e) {
logger.error(e);
} finally {
await client.close();
}
};
export default {
connectDB,
db,
};

如果是我,我会避免默认导出,并执行以下操作:

import { MongoClient } from 'mongodb';
import config from '../../config';
import logger from '../../logger';
export let db;
export const connectDB = async () => {
const client = new MongoClient(config.dbUri, {
userNewUrlParser: true,
useUnifiedTopology: true,
});
try {
await client.connect();
db = client.db('sample_mflix');
logger.info('Connected to Database');
} catch (e) {
logger.error(e);
} finally {
await client.close();
}
};

或者如果你想要一个更好的错误

import { MongoClient } from 'mongodb';
import config from '../../config';
import logger from '../../logger';
let db;
export const getDB = () => {
if (!db) {
throw new Error("DB Not yet connected");
}
return db;
}
export const connectDB = async () => {
const client = new MongoClient(config.dbUri, {
userNewUrlParser: true,
useUnifiedTopology: true,
});
try {
await client.connect();
db = client.db('sample_mflix');
logger.info('Connected to Database');
} catch (e) {
logger.error(e);
} finally {
await client.close();
}
};

最新更新