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

2017-07-19 10:16:04 +08:00
 dushandz

我想把连接成功之后的 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 为了优化 用不用搞个连接池 还是 一直连接着数据库····

2950 次点击
所在节点    Node.js
9 条回复
hronro
2017-07-19 10:31:04 +08:00
```js
// mongo-connector.js
export const getDb = mongoClinet.connect(DBLocationString)

// other-file.js
import { getDb } from './mongo-connector'
const db = await getDb
```
dushandz
2017-07-19 10:34:17 +08:00
@hronro 额 这样岂不是每次都要 连接一次吗····会不会创建很多连接在内存里··
hronro
2017-07-19 11:02:48 +08:00
@dushandz 你导出来的是一个 Promise,所以只会连一次
dushandz
2017-07-19 11:21:31 +08:00
@hronro 感谢大佬耐心回答 萌新入坑 = - = 再去看看 JavaScript 语法了 敢问大佬 有什么好的 nodejs 的教程吗···
hronro
2017-07-19 15:52:14 +08:00
@dushandz 不算大佬,js 语法的话,推荐看阮一峰的教程 http://es6.ruanyifeng.com/
tnaxismdc
2017-07-19 20:55:02 +08:00
最近也在搞这个,貌似自带池子,官方给的建议好像也是开了就不要 close,楼主要知道了也 @我一下
dushandz
2017-07-19 21:19:08 +08:00
@tnaxismdc 好的 - 3 -
ZJH9Rondo
2017-07-20 21:18:41 +08:00
@dushandz 建议你去看一本叫做 《深入浅出 Node.js 》的书,你就对 Node 的异步 I/O 有了一个全新清楚的认识
dushandz
2017-07-24 10:27:54 +08:00
@ZJH9Rondo 买了···里面有些东西过时了 2013 年的把··· 在看了

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/376339

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX