mysql - 在nodejs中编写SQL查询

标签 mysql node.js

这个问题主要是关于在nodejs中编写查询的最佳实践。我们引用了一些教程,但未能得出结论。

我们有一个 Node js API 层,主要用于读写数据库。这是示例代码:

pool.query("update node SET changed = " + params.updationTime + " where nid = " + params.nid);
pool.query("update node_revision SET timestamp = " + params.updationTime +" where nid = " + params.nid);
pool.end();

这是编写代码的正确方法吗?还是我们应该以异步格式本身编写 SQL 查询。

最佳答案

如果您的池配置允许多个连接,则两个查询可能会并行执行。调用类型本身并不重要。此示例需要 2 秒才能完成:

 connection.query('select sleep(1)');
 connection.query('select sleep(1)', function() { console.log('done!') });

还有这个:

 connection.query('select sleep(1)', function() {
   connection.query('select sleep(1)', function() { 
     console.log('done!') 
   });
  });

因为mysql协议(protocol)本身是“顺序的”(也就是说,只有在完全接收到前一个查询的结果后,客户端才允许发送下一个查询)。大多数异步客户端通过在内部对命令进行排队来隐藏此限制。如果有两个连接,查询实际上是并行进行的:

 connection1.query('select sleep(1)', function() { console.log('done1') });
 connection2.query('select sleep(1)', function() { console.log('done2') });

“done1”和“done2”将在大约 1 秒后出现在屏幕上

pool.querypool.getConnection() + connection.query() + connection.release( ) - 参见readme

关于mysql - 在nodejs中编写SQL查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26628111/

相关文章:

mysql - MS Access VBA 代码未删除所有记录

Node.js ftp put方法写的是要上传到ftp服务器的文件名,不是实际文件

javascript - Socket.IO 将数据发送到我自己的房间

javascript - 不能将 @Res() 与 FilesInterceptor() 一起使用

php - foreach 数据库中的数据未更新

MySQL 子查询优化与共享子查询

javascript - 为什么我的 POST 请求没有通过 nginx 获得 proxy_passed 到我的 nodejs 应用程序?

node.js - 架构配置无效 : `...` is not a valid type at path `ref`

php - 语法错误或访问冲突 : 1064 You have an error in your SQL syntax;

c# - 在 Windows CE 6.0 中访问 MySQL 服务器