在nodejs中为什么mongodb会影响到generator-问答-阿里云开发者社区-阿里云

开发者社区> 问答> 正文
阿里云
为了无法计算的价值
打开APP
阿里云APP内打开

在nodejs中为什么mongodb会影响到generator

我在项目中使用nodejs中的generator对mongodb进行操作,但是实验发现只要mongodb的连接不关闭,那么即便generator的done变成true了,程序也不会退出,请各位大侠解惑。
下面的代码中只要把所有的db.close()注释掉,就会出现generator的done为true了,但是程序依然不退出的情况。

var mongodb = require('mongodb');
var db = null;
function* DO(){
    try{
        db = yield connectMongodb();
        var collection = db.collection('userStruct');
        console.log('collection');
        var res = yield findSomething(collection, db);
        console.log('res', res);
    }catch(e){
        console.log('err', e);
        if(db){
            db.close();
        }
    }
}
var a = DO();
console.log('first', a.next());

function connectMongodb(){
    var mongoClient = mongodb.MongoClient;

    var DB_CONN_STR = 'mongodb://127.0.0.1:27017/jue';

    mongoClient.connect(DB_CONN_STR, function(err, db){
        if(err){
            a.throw(err);
        }else{
            console.log('connect', a.next(db));}
        }
    })
}
function findSomething(collection, db){
    collection.find({test:1}).toArray(function(err, retArr){
        if(err){
            a.throw(err);
        }else{
            console.log('in find');
            db.close();
            console.log('find', a.next(retArr));
        }
    })
}

展开
收起
蛮大人123 2016-06-14 17:21:35 2570 0
1 条回答
写回答
取消 提交回答
  • 蛮大人123
    我说我不帅他们就打我,还说我虚伪

    yield 后面你应该接一个 promise

    2019-07-17 19:38:18
    赞同 展开评论 打赏
问答分类:
问答地址:
相关产品:
问答排行榜
最热
最新
相关电子书
更多
MongoDB 应用数据平台助力快速构建您的应用
立即下载
MongoDB网络安全和权限管理
立即下载
MongoDB与大数据
立即下载