V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
dushandz
V2EX  ›  Node.js

nodejs mongodb 的连接对象 异步加载的 如何导出给别的文件使用

  •  
  •   dushandz · 2017-07-19 10:16:04 +08:00 · 2911 次点击
    这是一个创建于 2445 天前的主题,其中的信息可能已经有所发展或是发生改变。

    我想把连接成功之后的 DB 对象 导出给别的文件使用,直接导出的话 会返回 undefine

    var mongoClinet = require('mongodb').MongoClient
    const DBLocationString = 'mongodb://localhost:27017/dzusers'
    
    mongoClinet.connect(DBLocationString).then(function(db){
         //想在这里导出 db 对象给别的文件使用
         }).catch(err => console.log(err) )
    }).catch(function(err){
        console.log(err)
    })
    

    package.json 写 "mongodb" 是不是就是用的 官方的 "node-mongodb-native"

    mongodb 为了优化 用不用搞个连接池 还是 一直连接着数据库····

    9 条回复    2017-07-24 10:27:54 +08:00
    hronro
        1
    hronro  
       2017-07-19 10:31:04 +08:00   ❤️ 1
    ```js
    // mongo-connector.js
    export const getDb = mongoClinet.connect(DBLocationString)

    // other-file.js
    import { getDb } from './mongo-connector'
    const db = await getDb
    ```
    dushandz
        2
    dushandz  
    OP
       2017-07-19 10:34:17 +08:00
    @hronro 额 这样岂不是每次都要 连接一次吗····会不会创建很多连接在内存里··
    hronro
        3
    hronro  
       2017-07-19 11:02:48 +08:00 via Android   ❤️ 1
    @dushandz 你导出来的是一个 Promise,所以只会连一次
    dushandz
        4
    dushandz  
    OP
       2017-07-19 11:21:31 +08:00
    @hronro 感谢大佬耐心回答 萌新入坑 = - = 再去看看 JavaScript 语法了 敢问大佬 有什么好的 nodejs 的教程吗···
    hronro
        5
    hronro  
       2017-07-19 15:52:14 +08:00   ❤️ 1
    @dushandz 不算大佬,js 语法的话,推荐看阮一峰的教程 http://es6.ruanyifeng.com/
    tnaxismdc
        6
    tnaxismdc  
       2017-07-19 20:55:02 +08:00 via Android
    最近也在搞这个,貌似自带池子,官方给的建议好像也是开了就不要 close,楼主要知道了也 @我一下
    dushandz
        7
    dushandz  
    OP
       2017-07-19 21:19:08 +08:00
    @tnaxismdc 好的 - 3 -
    ZJH9Rondo
        8
    ZJH9Rondo  
       2017-07-20 21:18:41 +08:00
    @dushandz 建议你去看一本叫做 《深入浅出 Node.js 》的书,你就对 Node 的异步 I/O 有了一个全新清楚的认识
    dushandz
        9
    dushandz  
    OP
       2017-07-24 10:27:54 +08:00
    @ZJH9Rondo 买了···里面有些东西过时了 2013 年的把··· 在看了
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   5406 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 32ms · UTC 07:01 · PVG 15:01 · LAX 00:01 · JFK 03:01
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.