【发布时间】:2019-03-14 21:47:05
【问题描述】:
我正在开发一个 NodeJS 项目,并且似乎使用了非常常见的 AWS 设置。我的 ApiGateway 收到调用,触发 lambda A,然后这个 lambda A 触发其他 lambda,比如 B 或 C,具体取决于从 ApiGateway 传递的参数。
Lambda A 需要访问 MongoDB,为了避免自己运行 MongoDB 的麻烦,我决定使用 mLab。 ATM Lambda A 正在使用 NodeJS 驱动程序访问 MongoDB。 现在,不要与我使用连接池的每个 Lambda A 执行开始连接,再次,在 Lambda A 代码内部,在处理程序之外,我保留连接池,允许我在多次调用 Lambda A 时重用连接。 这似乎工作正常。 但是,当 Lambda A 调用 Lambda B 并且 Lambda B 需要访问 mLab 的 MongoDB 数据库时,我不确定如何处理连接。
- 是否可以通过某种方式传递连接池,否则 Lambda B 必须保留自己的连接池?
- 我正在考虑使用mLab's Data API,它公开了 MongoDB 驱动程序的大部分操作,因此我可以使用 HTTP 调用,例如GET 和 POST 对数据库运行命令。它似乎类似于RESTHeart。
我倾向于选项 2,但在 mLab's Data API 上,它明确指出要避免使用 REST api,除非无法直接使用 MongoDB 驱动程序连接:
第一种方法——我们尽可能强烈推荐 增加的性能和功能 - 是使用其中一种连接 可用的 MongoDB 驱动程序。如果您使用,则不需要使用我们的 API 司机。本文中记录的第二种方法是 通过 mLab 的 RESTful Data API 进行连接。仅当您使用此方法 无法使用 MongoDB 驱动程序连接。
考虑到这一切,最好的方法是什么? 1或2还是我应该考虑的其他选择?
【问题讨论】:
标签: node.js mongodb aws-lambda mlab