NodeJs 애플리케이션 및 모듈에서 Mongodb에 대한 연결을 올바르게 재사용하는 방법


124

나는 읽고 읽고 있었지만 전체 NodeJs 앱에서 동일한 데이터베이스 (MongoDb) 연결을 공유하는 가장 좋은 방법이 무엇인지 여전히 혼란 스럽습니다. 내가 이해했듯이 앱이 시작될 때 연결이 열리고 모듈간에 재사용되어야합니다. 현재 가장 좋은 방법은 server.js(모든 것이 시작되는 주 파일) 데이터베이스에 연결하고 모듈에 전달되는 개체 변수를 만드는 것입니다. 일단 연결되면이 변수는 필요에 따라 모듈 코드에서 사용되며이 연결은 열린 상태로 유지됩니다. 예 :

    var MongoClient = require('mongodb').MongoClient;
    var mongo = {}; // this is passed to modules and code

    MongoClient.connect("mongodb://localhost:27017/marankings", function(err, db) {
        if (!err) {
            console.log("We are connected");

            // these tables will be passed to modules as part of mongo object
            mongo.dbUsers = db.collection("users");
            mongo.dbDisciplines = db.collection("disciplines");

            console.log("aaa " + users.getAll()); // displays object and this can be used from inside modules

        } else
            console.log(err);
    });

    var users = new(require("./models/user"))(app, mongo);
    console.log("bbb " + users.getAll()); // not connected at the very first time so displays undefined

다른 모듈 models/user은 다음과 같습니다.

Users = function(app, mongo) {

Users.prototype.addUser = function() {
    console.log("add user");
}

Users.prototype.getAll = function() {

    return "all users " + mongo.dbUsers;

    }
}

module.exports = Users;

이제 나는 이것이 잘못되었다는 끔찍한 느낌이 들기 때문에이 접근 방식에 명백한 문제가 있습니까? 그렇다면 어떻게 더 좋게 만들 수 있습니까?


내가 며칠 전에 물어 본 것과 같은 종류의 질문. stackoverflow.com/questions/24547357/...
살바도르 달리에게

몽고 드라이버를 확인하십시오 . " async / await를 염두에두고 구축 "되었으며 module.exports = mongoist(connectionString);. ( connectionStringMongoDB 매뉴얼에서 읽어 보세요.)
Alexandr Nil

답변:


151

mongoUtil.jsmongo에 연결하고 mongo db 인스턴스를 반환하는 기능이 있는 모듈을 만들 수 있습니다 .

const MongoClient = require( 'mongodb' ).MongoClient;
const url = "mongodb://localhost:27017";

var _db;

module.exports = {

  connectToServer: function( callback ) {
    MongoClient.connect( url,  { useNewUrlParser: true }, function( err, client ) {
      _db  = client.db('test_db');
      return callback( err );
    } );
  },

  getDb: function() {
    return _db;
  }
};

그것을 사용하려면 다음에서 수행하십시오 app.js.

var mongoUtil = require( 'mongoUtil' );

mongoUtil.connectToServer( function( err, client ) {
  if (err) console.log(err);
  // start the rest of your app here
} );

그런 다음 다른 .js파일 과 같이 다른 곳에서 mongo에 액세스해야 할 때 다음 을 수행 할 수 있습니다.

var mongoUtil = require( 'mongoUtil' );
var db = mongoUtil.getDb();

db.collection( 'users' ).find();

이 작품 그 이유는 모듈이 때 노드에 있다는 것입니다 require'D, 그들은 단지 당신이 오직의 하나 개의 인스턴스로 끝날 것 때문에 일단 소스 /로드되는 _dbmongoUtil.getDb()항상 같은 인스턴스를 반환합니다.

코드는 테스트되지 않았습니다.


6
좋은 예! 그러나 질문이 있습니다. 여러 클러스터로 앱을 실행할 때 어떻게 작동합니까? 연결의 다른 인스턴스를 스핀 업하거나 단순히 소스의 기존 연결을 사용합니까?
Farhan Ahmad

19
그 사이에 몽고 연결이 끊어지는 경우를 어떻게 처리 하시겠습니까? getDb ()에 대한 모든 호출은 노드 애플리케이션이 다시 시작될 때까지 해당 시나리오에서 실패합니다.
Ayan

4
이 코드를 시도했지만 mongoUtil.getDb () 할 때 null이 생겼습니다. 그 이유를 모르겠습니다.
Keming

3
@KemingZeng-mongoUtil을 사용하는 모든 모듈을 app.js의 콜백 함수 내에서 가져 왔는지 확인해야합니다 connectToServer. 당신이 경우 require에 그 app.js전에이 _db설정되어, 당신은 다른 모듈에서 정의되지 않은 오류를 얻을 수 있습니다.
Mike R

2
mongoDB 버전 4부터는 var database = mongoUtil.getDb(); database.db().collection( 'users' ).
Julian Veerkamp

26

여러 가지 방법으로 구성 객체를 수용하도록 조정할 수 있지만 전반적으로 코드를 배치하는 방법과 비슷하지만 더 현대적인 JS 구문을 사용합니다. 필요하다면 프로토 타입과 콜백으로 쉽게 다시 작성할 수 있습니다.

mongo.js

const { MongoClient } = require('mongodb');
const config = require('./config');
const Users = require('./Users');
const conf = config.get('mongodb');

class MongoBot {
  constructor() {
    const url = `mongodb://${conf.hosts.join(',')}`;

    this.client = new MongoClient(url, conf.opts);
  }
  async init() {
    await this.client.connect();
    console.log('connected');

    this.db = this.client.db(conf.db);
    this.Users = new Users(this.db);
  }
}

module.exports = new MongoBot();

Users.js

class User {
  constructor(db) {
    this.collection = db.collection('users');
  }
  async addUser(user) {
    const newUser = await this.collection.insertOne(user);
    return newUser;
  }
}
module.exports = User;

app.js

const mongo = require('./mongo');

async function start() {
  // other app startup stuff...
  await mongo.init();
  // other app startup stuff...
}
start();

someFile.js

const { Users } = require('./mongo');

async function someFunction(userInfo) {
  const user = await Users.addUser(userInfo);
  return user;
}

이것은 내가 본 가장
깔끔한

이 답변은 거의 1 년이 지났고 실제로 더 많은 정보를 기대하지는 않지만 이것이 제가 가장 사용하고 싶은 접근 방식처럼 보이지만 mongo 파일에서 destructured Users 개체를 가져 오는 것은 운이 없습니다. someFile.js와 매우 유사한 파일이 있지만 Users.addUser를 호출하는 4 행은 항상 나를 위해 폭발합니다. 사용자가 정의되지 않았다고 말합니다. 내가 놓친 명백한 부분이 있습니까?
Rob E.

나는 이것이 나를 너무 괴롭히기 때문에 새로운 질문을 만들었 습니다 .
Rob E.

이것은 기술적으로 작동하지 않아야합니다. Require는 첫 번째 호출에서 개체를 캐시합니다. 이 경우 생성자가 반환 한 객체 만 캐시합니다. 나중에 'init'를 호출해도 반환되는 항목에 영향을주지 않습니다. 따라서이 const {Users} = require ( './ mongo')는 캐시 된 결과에 'User'속성이 없기 때문에 실패해야합니다.
beNerd

require.cache는 해당 객체를 필요로하는 모든 파일간에 공유되는 객체에 대한 참조를 저장합니다. 프로그램의 다른 부분 (또는 타이머를 사용하는 경우 자체)의 작업에 의해 변경 될 수있는 개체입니다. 직접 테스트 할 수 있지만 데모를 위해 간단한 펜을 함께 던졌습니다. codesandbox.io/s/awesome-water-cexno
EddieDean

19

go-oleg의 예를 기반으로 현대적인 구문으로 수행하는 방법은 다음과 같습니다. 광산은 테스트되고 작동합니다.

코드에 주석을 달았습니다.

./db/mongodb.js

 const MongoClient = require('mongodb').MongoClient
 const uri = 'mongodb://user:password@localhost:27017/dbName'
 let _db

 const connectDB = async (callback) => {
     try {
         MongoClient.connect(uri, (err, db) => {
             _db = db
             return callback(err)
         })
     } catch (e) {
         throw e
     }
 }

 const getDB = () => _db

 const disconnectDB = () => _db.close()

 module.exports = { connectDB, getDB, disconnectDB }

./index.js

 // Load MongoDB utils
 const MongoDB = require('./db/mongodb')
 // Load queries & mutations
 const Users = require('./users')

 // Improve debugging
 process.on('unhandledRejection', (reason, p) => {
     console.log('Unhandled Rejection at:', p, 'reason:', reason)
 })

 const seedUser = {
     name: 'Bob Alice',
     email: 'test@dev.null',
     bonusSetting: true
 }

 // Connect to MongoDB and put server instantiation code inside
 // because we start the connection first
 MongoDB.connectDB(async (err) => {
     if (err) throw err
     // Load db & collections
     const db = MongoDB.getDB()
     const users = db.collection('users')

     try {
         // Run some sample operations
         // and pass users collection into models
         const newUser = await Users.createUser(users, seedUser)
         const listUsers = await Users.getUsers(users)
         const findUser = await Users.findUserById(users, newUser._id)

         console.log('CREATE USER')
         console.log(newUser)
         console.log('GET ALL USERS')
         console.log(listUsers)
         console.log('FIND USER')
         console.log(findUser)
     } catch (e) {
         throw e
     }

     const desired = true
     if (desired) {
         // Use disconnectDB for clean driver disconnect
         MongoDB.disconnectDB()
         process.exit(0)
     }
     // Server code anywhere above here inside connectDB()
 })

./users/index.js

 const ObjectID = require('mongodb').ObjectID

 // Notice how the users collection is passed into the models
 const createUser = async (users, user) => {
     try {
         const results = await users.insertOne(user)
         return results.ops[0]
     } catch (e) {
         throw e
     }
 }

 const getUsers = async (users) => {
     try {
         const results = await users.find().toArray()
         return results
     } catch (e) {
         throw e
     }
 }

 const findUserById = async (users, id) => {
     try {
         if (!ObjectID.isValid(id)) throw 'Invalid MongoDB ID.'
         const results = await users.findOne(ObjectID(id))
         return results
     } catch (e) {
         throw e
     }
 }

 // Export garbage as methods on the Users object
 module.exports = { createUser, getUsers, findUserById }

첫 번째 스 니펫의 try catch가 필요합니까? 연결 함수는 비동기 함수입니다. 노드 스타일 콜백을 사용하여 오류가 이미 발견되었습니다.
정강이

1
제가 좋아하는 매우 관찰력있는 질문입니다. 코드를 배치하는 서식지에서 자세히 연구하지 않고는 잘 모르겠습니다. 코드 실행 중에 취할 수있는 경로의 수가 제한됩니다. 나는 사용자 정의 핸들러를 거기에 둘 수 있음을 보여주기 위해 주로 추가했으며 비동기 함수에 try / catch를 기본적으로 포함하기 때문에 추가했습니다. 단순히 연결 지점입니다. 그래도 좋은 질문입니다. 추가 메모를 찾으면 업데이트하겠습니다.
agm1984

getDB ()를 호출 할 때마다 새로운 연결이 생성됩니다.
Vinay Pandya 2019

18

Express를 사용 하는 경우 요청 객체에서 db 연결을 얻을 수있는 express-mongo-db 모듈을 사용할 수 있습니다.

설치

npm install --save express-mongo-db

server.js

var app = require('express')();

var expressMongoDb = require('express-mongo-db');
app.use(expressMongoDb('mongodb://localhost/test'));

route / users.js

app.get('/', function (req, res, next) {
    req.db // => Db object
});

8

go-oleg은 기본적으로 옳지 만, 요즘에는 (아마도) "mongodb"자체를 사용하지 않고 오히려 "더러운 작업"을 많이하는 프레임 워크를 사용합니다.

예를 들어 몽구스는 가장 일반적인 것 중 하나입니다. 이것은 우리의 초기 server.js파일에있는 것입니다.

const mongoose = require('mongoose');
const options = {server: {socketOptions: {keepAlive: 1}}};
mongoose.connect(config.db, options);

이것이 설정에 필요한 모든 것입니다. 이제 코드의 어느 곳에서나 사용하십시오.

const mongoose = require('mongoose');

그리고 설정 한 인스턴스를 얻습니다. mongoose.connect


1
몽구스는 ORM입니다. 동일한 함정에 대해 알기 위해 이것을 읽으십시오 . 의심 할 여지없이 ORM은 개발 및 학습 과정에 사용될 때 훌륭하지만 생산에는 사용되지 않습니다. 바로이 점을 명심
Saras 아리아

1
몽구스는 스키마도 필요합니다. Neo4j와 함께 다중 언어 지속성의 일부로 MongoDB 패키지를 사용하고 있으므로 필요에 따라 문서 속성을 정의하는 것이 좋습니다.
agm1984 jul.

7

약속으로 연결을 초기화하십시오.

const MongoClient = require('mongodb').MongoClient
const uri = 'mongodb://...'
const client = new MongoClient(uri)
const connection = client.connect() // initialized connection

그런 다음 데이터베이스에서 작업을 수행 할 때마다 연결을 호출합니다.

    // if I want to insert into the database...
    const connect = connection
    connect.then(() => {
        const doc = { id: 3 }
        const db = client.db('database_name')
        const coll = db.collection('collection_name')
        coll.insertOne(doc, (err, result) => {
            if(err) throw err
        })
    })

7

허용 된 답변을 기반으로 테스트 된 솔루션 :

mongodbutil.js :

var MongoClient = require( 'mongodb' ).MongoClient;
var _db;
module.exports = {
  connectToServer: function( callback ) {
    MongoClient.connect( "<connection string>", function( err, client ) {
      _db = client.db("<collection name>");
      return callback( err );
    } );
  },
  getDb: function() {
    return _db;
  }
};

app.js :

var createError = require('http-errors');
var express = require('express');
var path = require('path');
var cookieParser = require('cookie-parser');
var logger = require('morgan');
var app = express();
app.set('views', path.join(__dirname, 'views'));
app.set('view engine', 'ejs');
app.use(logger('dev'));
app.use(express.json());
app.use(express.urlencoded({ extended: false }));
app.use(cookieParser());
app.use(express.static(path.join(__dirname, 'public')));

var mongodbutil = require( './mongodbutil' );
mongodbutil.connectToServer( function( err ) {
  //app goes online once this callback occurs
  var indexRouter = require('./routes/index');
  var usersRouter = require('./routes/users');
  var companiesRouter = require('./routes/companies');
  var activitiesRouter = require('./routes/activities');
  var registerRouter = require('./routes/register');  
  app.use('/', indexRouter);
  app.use('/users', usersRouter);
  app.use('/companies', companiesRouter);
  app.use('/activities', activitiesRouter);
  app.use('/register', registerRouter);  
  // catch 404 and forward to error handler
  app.use(function(req, res, next) {
    next(createError(404));
  });
  // error handler
  app.use(function(err, req, res, next) {
    res.locals.message = err.message;
    res.locals.error = req.app.get('env') === 'development' ? err : {};
    res.status(err.status || 500);
    res.render('error');
  });
  //end of calback
});

module.exports = app;

activities.js-경로 :

var express = require('express');
var router = express.Router();
var mongodbutil = require( '../mongodbutil' );
var db = mongodbutil.getDb();

router.get('/', (req, res, next) => {  
    db.collection('activities').find().toArray((err, results) => {
        if (err) return console.log(err)
            res.render('activities', {activities: results, title: "Activities"})
    });
});

router.post('/', (req, res) => {
  db.collection('activities').save(req.body, (err, result) => {
    if (err) return console.log(err)
    res.redirect('/activities')
  })
});

module.exports = router;

이 답변은 완전하고 기능적입니다.
Ahmad Sharif

7

2020 년 설정은 다음과 같습니다.

./utils/database.js

const { MongoClient } = require('mongodb');

class Mongo {
    constructor () {
        this.client = new MongoClient("mongodb://127.0.0.1:27017/my-app", {
            useNewUrlParser: true,
            useUnifiedTopology: true
        });
    }

    async main () {
        await this.client.connect();
        console.log('Connected to MongoDB');

        this.db = this.client.db();
    }
}

module.exports = new Mongo();

/app.js

const mongo = require('./utils/database');
const express = require('express');

const app = express();

const boot = async () => {
    await mongo.main();
    app.listen(3000);
};

boot();

3

dbconnection.js와 같은 dbconnection 파일을 만들 수 있습니다.

const MongoClient = require('mongodb').MongoClient
const mongo_url = process.env.MONGO_URL;

    module.exports = {
        connect: async function(callback) {
            var connection;
            await new Promise((resolve, reject) => {
                MongoClient.connect(mongo_url, {
                    useNewUrlParser: true
                }, (err, database) => {
                    if (err)
                        reject();
                    else {
                        connection = database;
                        resolve();
                    }
                });
            });
            return connection;
        }

    };

다음과 같이 앱에서이 파일을 사용합니다.

var connection = require('../dbconnection');

그런 다음 비동기 함수 내에서 이와 같이 사용하십시오.

db  = await connection.connect();

이것이 효과가 있기를 바랍니다


2

나는 이것에 약간 늦었지만 내 솔루션도 추가 할 것입니다. 여기의 답변에 비해 훨씬 더 멍청한 접근 방식입니다.

어쨌든 MongoDB 버전 4.0 및 Node.js 3.0 (또는 그 이상 버전)을 사용 isConnected()하는 경우 MongoClient.

const MongoClient = require('mongodb').MongoClient;
const uri = "<your connection url>";
const client = new MongoClient(uri, { useNewUrlParser: true });

if (client.isConnected()) {
  execute();
} else {
  client.connect().then(function () {
    execute();
  });
}

function execute() {
    // Do anything here
    // Ex: client.db("mydb").collection("mycol");
}

이것은 나를 위해 잘 작동했습니다. 도움이 되었기를 바랍니다.


2

나는 파티에 늦었지만이 답변이 누군가에게 도움이되기를 바랍니다. 이것은 기능 코드입니다.

db.js

const MongoClient = require("mongodb").MongoClient
const urlMongo = "mongodb://localhost:27017"

var db;

function connectToServer( callback ) {
    MongoClient.connect(urlMongo,  { useUnifiedTopology: true , useNewUrlParser: true }, function( err, client ) {
        db  = client.db('auth');
        return callback( err );
    })
}

function getDb() {
    return db
}

module.exports = {connectToServer, getDb}

mongo에 연결하기 위해 하나의 함수를 내보내고 연결 인스턴스를 얻기 위해 다른 함수를 내 보냅니다.

app.js

const express = require('express')
const app = express()

const mongo = require('./db.js');

mongo.connectToServer( function( err) {
  if (err) console.log(err);
  const auth = require('./modulos')

  app.post('/login', (req, res) => { auth.login(req, res)})
  app.listen(3000, function () { console.log('Corriendo en puerto 3000')})

});

연결을 초기화 한 후 auth 모듈을 요구해야합니다. 그렇지 않으면 getDb 함수가 undefined를 반환합니다.

module.js

const db = require('../db.js').getDb()
const usuariosCollection = db.collection('usuarios')

function login(req, res){
    usuariosCollection.find({ 'username': 'Fran' }).toArray(function (err, doc) {
        ...
    })
}

2

이것은 Express로 태그가 지정되었으므로 Express에는 경로간에 데이터를 공유하는 기능이 내장되어 있다고 언급하고 싶습니다. app.locals라는 개체가 있습니다. 속성을 연결하고 경로 내부에서 액세스 할 수 있습니다. app.js 파일에서 mongo 연결을 인스턴스화하기 만하면됩니다.

var app = express();

MongoClient.connect('mongodb://localhost:27017/')
.then(client =>{
  const db = client.db('your-db');
  const collection = db.collection('your-collection');
  app.locals.collection = collection;
});
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              // view engine setup
app.set('views', path.join(__dirname, 'views'));

이 데이터베이스 연결은 이제 추가 모듈을 생성하고 요구할 필요없이 아래와 같이 경로 내에서 액세스 할 수 있습니다.

app.get('/', (req, res) => {
  const collection = req.app.locals.collection;
  collection.find({}).toArray()
  .then(response => res.status(200).json(response))
  .catch(error => console.error(error));
});

이 방법을 사용하면 언제든지 닫도록 선택하지 않는 한 앱 기간 동안 데이터베이스 연결이 열려 있습니다. 쉽게 액세스 할 수 req.app.locals.your-collection있으며 추가 모듈이 필요하지 않습니다.


나는 그것이 가장 깨끗한 접근 방식이라고 생각합니다. 이 접근 방식에 대해 가능한 단점이 있습니까? 나는 그것을 사용하고 있고 나에게 꽤 좋아 보인다, 나의 배운 것을 공유 할 것이다.
Priya Ranjan Singh

1
@PriyaRanjanSingh 솔직히 말해서 저는 어떤 결점도 모르지만 이것에 대한 전문가는 아닙니다. 나는 다른 방법을 이상하게 발견하고 내 자신의 이익을 위해 더 깔끔한 코드를 찾고 있었기 때문에 조사 후이 방법을 발견했습니다. 단점이 있으면 나보다 더 잘 아는 사람이 부각 할 수 있기를 바라며,이 방법을 한동안 문제없이 사용해 왔는데 잘 작동하는 것 같다.
Hoppo

이것은 실제로 훌륭합니다. 저는 여러분에게서 배운 후 오랫동안 사용하고 있습니다. 더 큰 규모의 경우 생각할 수있는 한 가지는 pm2 / forever 뒤에서 실행되는 앱의 여러 인스턴스가 있으면 공유되지 않는다는 것입니다. 지금은 완벽합니다 :)
Priya Ranjan Singh

1

애플리케이션에서 mongoose를 사용하도록 선택한 경우 다음 스 니펫으로 app.js 파일을 편집하십시오.

app.js

const mongoose = require('mongoose');
mongoose.connect('mongodb://localhost:27017/Your_Data_Base_Name', {useNewUrlParser:true})
  .then((res) => {
    console.log(' ########### Connected to mongDB ###########');
  })
  .catch((err) => {
    console.log('Error in connecting to mongoDb' + err);
  });`

다음 단계 : 애플리케이션에 필요한 모델 정의 및 예를 들어 직접 CRUD 작업 수행

blogSchema.js

 const mongoose = require('mongoose');
 const Schema = mongoose.Schema;
 const blogSchema = new Schema({
     _id : mongoose.Schema.Types.ObjectId,
     title : {
        type : 'String',
        unique : true,
        required : true       
    },
    description : String,
        comments : [{type : mongoose.Schema.Types.ObjectId, ref: 'Comment'}]
 });
 module.exports = mongoose.model('Blog', blogSchema);

사용법 createBlog.js

const Blog = require('../models/blogSchema');
exports.createBlog = (req, res, next) => {
const blog = new Blog({
  _id : new mongoose.Types.ObjectId,
  title : req.body.title,
  description : req.body.description,
});
blog.save((err, blog) => {
  if(err){
    console.log('Server Error save fun failed');
    res.status(500).json({
      msg : "Error occured on server side",
      err : err
    })
  }else{
    //do something....
  }

항상 mogoDB에 연결할 필요는 없습니다 ....


1
var MongoClient = require('mongodb').MongoClient;
var url = 'mongodb://localhost:27017/';
var Pro1;

module.exports = {
    DBConnection:async function()
    {
        Pro1 = new Promise(async function(resolve,reject){
            MongoClient.connect(url, { useNewUrlParser: true },function(err, db) {
                if (err) throw err;
                resolve(db);
            });        
        });
    },
    getDB:async function(Blockchain , Context)
    {
        bc = Blockchain;
        contx = Context;
        Pro1.then(function(_db)
        {
            var dbo = _db.db('dbname');
            dbo.collection('collectionname').find().limit(1).skip(0).toArray(function(err,result) {
                if (err) throw err;
                console.log(result);
            });
        });
    },
    closeDB:async function()
    {
        Pro1.then(function(_db){
            _db.close();
        });
    }
};

1
간단한 설명을 추가해 주시겠습니까?
RtmY

1
const express = require('express')
const server = express()
const mongoClient = require('./MongoDB.js').client
const port = 3000
;(async () => {
    await mongoClient.connect()
    server.listen(port, () => console.log(`Server is listening on port ${port}!`))
})().catch(console.error)

0

나는 이것이 잘 작동한다는 것을 알았다 :)

mongoUtil.ts

import { MongoClient } from 'mongodb';
const uri =
  'MONGOSTRING';

let connPoolPromise: any = null;

const mongoPoolPromise = () => {
  if (connPoolPromise) return connPoolPromise;

  connPoolPromise = new Promise((resolve, reject) => {
    const conn = new MongoClient(uri, {
      useNewUrlParser: true,
      useUnifiedTopology: true,
    });

    if (conn.isConnected()) {
      return resolve(conn);
    } else {
      conn
        .connect()
        .then(() => {
          return resolve(conn.db('DATABASENAME'));
        })
        .catch(err => {
          console.log(err);
          reject(err);
        });
    }
  });

  return connPoolPromise;
};

export = {
  mongoPoolPromise,
};

anyFile.ts

const { mongoPoolPromise } = require('./mongoUtil');

async function getProducts() {
  const db = await mongoPoolPromise();
  const data = await db
    .collection('myCollection')
    .find({})
    .toArray();
  console.log(data);
  return data;
}

export { getProducts };

답변은로 태그가 지정되어 javascript있습니다. TypeScript 답변이 적절하다고 생각하지 마세요.
KPopOG
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.