美文网首页
使用自己的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