以一种不寻常的方式使用module.exports

我也想在其他模块中使用mongodb连接,所以我选择了这种方法。 有什么缺点或我应该意识到的东西吗? 我将在我的app.js文件中要求此文件。 还是有其他优雅的方法可以做同样的事情。

- description : "location description"
  ▿ location : LocationCodable
    - latitude : "0.0"
    - longitude : "0.0"
    - description : "Test Ort"
- linked_users : "[\"5dc73d6e1c20540b24336681\",\"5dca64f4bf98ec2ada3b315e\"]"
yangjuan1987 回答:以一种不寻常的方式使用module.exports

这有很多问题。这个概念行不通。

对于初学者来说,您的while(true)循环会阻止事件循环,因此db永远不会获得值,因此您的循环永远不会完成。

连接中的网络操作完成后,它将在事件队列中添加一个事件,并且与之关联的回调(然后是已解决的Promise)仅在将控制权返回到事件循环时才能运行,以便事件可以得到处理。

但是,您的while(true)循环阻止了事件循环,因此无法处理任何事件。除非您在循环内使用await(这样可以运行其他事件),否则无法在node.js中使用等待循环。它只是创建一个无限循环。

直到我们有顶级await用于模块初始化(正在处理),您才能直接导出异步获取的值。

相反,您可以导出promise,而调用者必须使用promise来获取数据库。或导出返回承诺的函数。

这些其他答案中有关busy-wait while循环问题的更多信息:

Wait until flag=true

javascript - What is wrong with this while loop? never ending loop

Why does a while loop block the event loop?

本文链接:https://www.f2er.com/2712642.html

大家都在问