node.js - 在nodejs中为什么mongodb会影响到generator的运行
大家讲道理
大家讲道理 2017-04-17 13:07:05
[Node.js讨论组]

我在项目中使用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));
        }
    })
}
大家讲道理
大家讲道理

光阴似箭催人老,日月如移越少年。

全部回复(1)
迷茫

yield 后面你应该接一个 promise 吧

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号