【问题标题】:Exporting a variable which is already being used inside an exported function导出已在导出函数中使用的变量
【发布时间】:2021-03-25 17:20:14
【问题描述】:

我正在尝试在一个单独的文件中初始化我的 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,
};

【问题讨论】:

    标签: javascript node.js mongodb ecmascript-6


    【解决方案1】:

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

    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();
        }
    };
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-09-07
      • 1970-01-01
      • 2019-11-21
      • 1970-01-01
      相关资源
      最近更新 更多