美文网首页
使用自己的Promise库和解决连接超时导致的异步问题

使用自己的Promise库和解决连接超时导致的异步问题

作者: 黑山老水 | 来源:发表于2017-08-29 10:02 被阅读236次

    默认Promise Library警告

    再次运行npm run test查看输出:

    warning

    这是因为Mongoose不赞成使用default promise library。


    使用自己的Promise Library

    例如:

    • bluebird
    • q
    • ES6 Promise

    打开test_helper.js文件,修改并删除:

    //告诉mongoose使用这个Promise Library的Implementation
    //ES6 promise of node environment
    mongoose.Promise = global.Promise;
    

    再次运行npm run test查看输出。


    解决连接可能导致的异步问题

    1. 我们希望Mocha的流程:
    Mocha测试流程

    因为连接也需要时间,为了防止连接花了过长的时间,我们必须让Mocha等待连接完毕了才执行测试。

    1. 另一个hook function (before function):只在我们整个测试组之前执行一次。
    • 连接到mongoose,不管这个连接需要多长时间,Mocha都要等待
    • 当connection open,让Mocha开始我们第一组测试
    //在我们执行测试之前,先用hook function执行一次连接
    before((done) => {
           //告诉mongoose当前需要连接的数据库在哪。
           //localhost: 在当前机器上,查找MongoDB.
           //localhost 变成 port 比如:65.54.6.46:4000, 查找远程数据库
           //users_test是自定义的MongoDB中多个数据库的一个
           mongoose.connect('mongodb://localhost/users_test', {
                            useMongoClient: true, //The same is true for connect() and createConnection() if useMongoClient is true.
                            });
           mongoose.connection //once和on都是event handler
           //监听数据库发出的叫open的事件一次,然后调用一个函数
           .once('open', () => {done();})
           //监听数据库发出的叫error的事件,然后调用一个函数
           .on('error', (error) => {
               console.warn('Warning', error)
               });
           });
    

    相关文章

      网友评论

          本文标题:使用自己的Promise库和解决连接超时导致的异步问题

          本文链接:https://www.haomeiwen.com/subject/mzzndxtx.html