为什么要使用 nodeJS 驱动程序来操作 MongoDB 数据库?
Why use the nodeJS driver to manipulate a MongoDB database?
如果我们可以从 Mongo shell 更轻松地执行相同的查询操作,那么使用驱动程序和 JavaScript 有什么意义?
如果您使用某种语言编程(例如 Java),使用 Java 驱动程序访问 MongoDB 比调用 mongodb shell 来自 Java,并以这种方式(来自 shell)执行到 MongoDB 的命令。这同样适用于 JavaScript 语言,尤其是 NodeJS JavaScript 宿主环境。这就是为什么使用驱动程序是有意义的。
实际上,这整件事不仅适用于 MongoDB,也适用于关系数据库(如 MySQL、Oracle 等)。
理论上任何一段代码也可以通过很好的shell实现。
那么,为什么我们实际上不惜一切代价远离 shell?
- 安全问题,当应用程序使用shell执行操作时,它对漏洞利用非常敏感。
- 配置。如果服务器没有需要的客户端,或者客户端版本错误怎么办?
- 驱动程序处理许多您乍一看可能不会注意到的边缘情况。连接丢失处理、多个连接等。
简而言之,将 shell 命令想象成管理员的用户界面。它对于一项任务来说可能足够强大,但作为开发人员,您希望通过这个中间人并直接与服务器通信。
如果我们可以从 Mongo shell 更轻松地执行相同的查询操作,那么使用驱动程序和 JavaScript 有什么意义?
如果您使用某种语言编程(例如 Java),使用 Java 驱动程序访问 MongoDB 比调用 mongodb shell 来自 Java,并以这种方式(来自 shell)执行到 MongoDB 的命令。这同样适用于 JavaScript 语言,尤其是 NodeJS JavaScript 宿主环境。这就是为什么使用驱动程序是有意义的。
实际上,这整件事不仅适用于 MongoDB,也适用于关系数据库(如 MySQL、Oracle 等)。
理论上任何一段代码也可以通过很好的shell实现。
那么,为什么我们实际上不惜一切代价远离 shell?
- 安全问题,当应用程序使用shell执行操作时,它对漏洞利用非常敏感。
- 配置。如果服务器没有需要的客户端,或者客户端版本错误怎么办?
- 驱动程序处理许多您乍一看可能不会注意到的边缘情况。连接丢失处理、多个连接等。
简而言之,将 shell 命令想象成管理员的用户界面。它对于一项任务来说可能足够强大,但作为开发人员,您希望通过这个中间人并直接与服务器通信。