问题描述
const connect = async () => { // 连接 mongodb 数据库 const db = await monguaDb() const collection = db.collection(’user’) let b = await collection.find({}).toArray() cc = b console.log('111---' , cc) return b}const a = connect()console.log('2222--------', cc)
如题我想封装mongo到Model....但是发现一个问题,里面打印没问题,但是外面调用的时候,数据会丢失。。。。222-------打印的是空
哦,如果放到项目封装好,打印出来的是Promise { <pending> }
怎么处理才能返回数组,还是需要用mongose这些框架了?
问题解答
回答1:我使用的是mongoose,蛮好用的,这儿有我写的几个demo https://github.com/treeandgra...
https://github.com/treeandgra...
回答2:首先我要声明的是这个问题与框架或库无关,完全是 promise 的问题。1、并不是数据丢失,而是你的 cc 变量瞎定义而且根本没必要。2、看的出来楼主对 promise 了解不够,await 返回的本来就是 promise 对象,链式调用一下就可以取到数据了。
const connect = async () => { const db = await monguaDb() const collection = db.collection(’user’) let b = await collection.find({}).toArray() console.log('111---' , b); return b; //返回的b是promise对象}connect().then((doc) => { //取出b完成后resolve的数据 console.log(222---' , doc);});