Javascript knex中的排水管连接比预期花费更多的时间

Javascript knex中的排水管连接比预期花费更多的时间,javascript,node.js,mocha.js,knex.js,Javascript,Node.js,Mocha.js,Knex.js,我正在对使用knex池的项目进行摩卡测试 我遇到的问题是,当测试结束时,它会一直等到knex池中的水排干,并且需要额外的几秒钟(大约5-10秒)来完成mocha运行 代码示例: knex已初始化: const Knex = require('knex'); const knex = new Knex({ client: 'pg', pool: { min: 1, max: 10 }, connection: {}, searchPath: 'knex,public', //

我正在对使用knex池的项目进行摩卡测试

我遇到的问题是,当测试结束时,它会一直等到knex池中的水排干,并且需要额外的几秒钟(大约5-10秒)来完成mocha运行

代码示例:

knex已初始化:

const Knex = require('knex');
const knex = new Knex({
  client: 'pg',
  pool: { min: 1, max: 10 },
  connection: {},
  searchPath: 'knex,public',
  // debug: true,
});
摩卡测试排水管连接:

  after((done) => {
    knex.destroy().then(done);
  })
我想完成的是以下两项:

  • 更快地排空knex连接
  • 莫名其妙地摩卡咖啡完成测试,而无需等待knex排水

  • 有什么建议吗?

    这项功能不久前在摩卡发生了变化

    2879:默认情况下,一旦所有测试完成,Mocha将不再强制流程退出。这意味着任何测试代码(或测试中的代码) 通常会阻止节点退出的将在运行时这样做 摩卡。提供--exit标志以恢复到v4.0.0之前的行为 (@ScottFreeCode,@boneskull)

    如果上述情况没有帮助,您可以始终在“完成”中调用process.exit(0),以使用成功退出代码强制终止进程


    在knex侧,没有强制终止连接的强制选项。

    此功能在不久前在摩卡发生了更改

    2879:默认情况下,一旦所有测试完成,Mocha将不再强制流程退出。这意味着任何测试代码(或测试中的代码) 通常会阻止节点退出的将在运行时这样做 摩卡。提供--exit标志以恢复到v4.0.0之前的行为 (@ScottFreeCode,@boneskull)

    如果上述情况没有帮助,您可以始终在“完成”中调用process.exit(0),以使用成功退出代码强制终止进程


    在knex侧,没有强制终止连接的强制选项。

    这将帮助您的连接避免排水

    const config = {
        client: "pg",
        connection: {
          host: hostname,
          user: username,
          password: password,
          database: datbase
        },
        pool: {
          min: 0,
          max: 10
        },
        acquireConnectionTimeout: 1000
      }
      var Knex = require('knex')
    
      this.functioname = () => {
        var output = {}
        return new Promise(function (resolve) {
          var knex = new Knex(config)
          knex(tablename)
            .select()
            .then((result) => {
              if (result.length > 0) {
                output.error = false
                output.result = result
              } else {
                output.error = true
              }
              resolve(output)
            })
            .catch((err) => {
              err.error = true
              resolve(err)
            })
            .finally(() => {
              knex.destroy()
            })
        })
      }
    

    这将有助于您的连接不被耗尽

    const config = {
        client: "pg",
        connection: {
          host: hostname,
          user: username,
          password: password,
          database: datbase
        },
        pool: {
          min: 0,
          max: 10
        },
        acquireConnectionTimeout: 1000
      }
      var Knex = require('knex')
    
      this.functioname = () => {
        var output = {}
        return new Promise(function (resolve) {
          var knex = new Knex(config)
          knex(tablename)
            .select()
            .then((result) => {
              if (result.length > 0) {
                output.error = false
                output.result = result
              } else {
                output.error = true
              }
              resolve(output)
            })
            .catch((err) => {
              err.error = true
              resolve(err)
            })
            .finally(() => {
              knex.destroy()
            })
        })
      }