小编Fie*_*hra的帖子

如何在玩笑测试中正确关闭猫鼬连接

使用 --detectOpenHandles 参数运行测试后出现以下错误

\n
 Jest has detected the following 1 open handle potentially keeping Jest from exiting:\n\n \xe2\x97\x8f  PROMISE\n\n  18 |\n  19 | mongoose.Promise = global.Promise;\n> 20 | mongoose.connect(config.database.link, config.database.options);\n     |          ^\n  21 |\n  22 |\n  23 | app.use(cors());\n
Run Code Online (Sandbox Code Playgroud)\n

但我的测试包括 mongoose.disconnect()

\n
afterAll(() => {\n  return new Promise(res => mongoose.disconnect(() => {\n    res();\n  }));\n});\n
Run Code Online (Sandbox Code Playgroud)\n

我尝试将 afterAll 函数更改为如下所示:

\n
afterAll(async () => {\n  await mongoose.disconnect();\n  await mongoose.connection.close();\n});\n
Run Code Online (Sandbox Code Playgroud)\n

我还尝试在 afterAll() 内部调用 con.disconnect

\n
app.con = mongoose.connect(config.database.link, config.database.options);\n\n// inside of …
Run Code Online (Sandbox Code Playgroud)

testing mongoose mongodb node.js jestjs

10
推荐指数
1
解决办法
6062
查看次数

如何检查嵌套数组是否为空?

如何检查嵌套数组是否为空?当没有数据时,数组看起来像这样:

const data = [ [  ] ]
Run Code Online (Sandbox Code Playgroud)

如果它有数据,它看起来像这样:

const data = [
  [{"Product": 7  }]
]
Run Code Online (Sandbox Code Playgroud)

要检查它是否为空,我正在执行以下操作,但不起作用:

if (!Array.isArray(data[0][0]) || data[0][0].length === 0) {
  return "Data is empty"
}
Run Code Online (Sandbox Code Playgroud)
  1. 我不明白的是为什么!Array.isArray(data[0][0])返回true,这意味着嵌套数组不是一个数组(这很奇怪,因为它一个数组,只是空的)。根据文档,Array.isArray([])返回 true 那么如何!Array.isArray(data[0][0]返回 true?

  2. data[0][0].length部分抛出一个错误,指出"TypeError: "data[0][0] is undefined""。为什么会这样呢?

  3. 这就引出了一个问题:如何检查嵌套数组是否为空?

javascript arrays

4
推荐指数
1
解决办法
4989
查看次数

标签 统计

arrays ×1

javascript ×1

jestjs ×1

mongodb ×1

mongoose ×1

node.js ×1

testing ×1