我对 NodeJS 相当陌生(来自 PHP 背景)。与 PHP 的阻塞性质相比,我对 NodeJS 的异步性质有基本的了解。我创建了一些连接到 mysql 的应用程序节点并让它们正常工作。
我目前对在 Node 中执行查询的最佳方式的理解是:
我处于需要迭代大量项目并将每个项目插入数据库的情况。执行上述操作无效。我的想法是,由于每个查询都是并行执行的,列表中的下一项正在尝试获取连接,但由于之前的查询可能尚未完成,因此没有可用的。没有抛出任何错误,只是似乎没有放入项目。通过日志记录,我发现它从未达到运行 pool.getConnection() 回调的程度。
所以我想我可以修改连接流程:
问题是,我怎么知道 .release() 我的连接什么时候是安全的?我不能只在我的 .query() 回调中执行此操作,因为之后可能会有更多查询。但我也不能在查询回调中执行此操作,因为我知道我需要等待所有查询完成。我是否负责创建自己的逻辑来确定所有查询(以及所有可能的未来查询,即使它们尚未启动)何时完成?或者这只是没有完成的事情?
在 PHP 中,这将是微不足道的,因为它具有阻塞性质。我选择在这个应用程序中使用 NodeJS,因为它有时确实需要异步。但它在我的应用程序不需要的地方强制我使用异步(在某些情况下不应该使用它)。
我不愿发布我的代码,因为它有点复杂,所以我不想分散这个特定主题的注意力。