从 firebase 函数连接到 MongoDB Atlas

2024-03-27

我正在尝试从 firebase 函数连接到 mongodb atlas,例如。

export default async () => {
  try {
    const url = 'mongodb+srv://foo:[email protected] /cdn-cgi/l/email-protection/my-db?retryWrites=true';
    const client = await MongoClient.connect(url);
    client.dbName('my-db');
    return client;
  } catch (e) {
    throw e;
  }
}

但是,我收到此错误:

{ “代码”:“ESERVFAIL”, "errno": "ESERVFAIL", “系统调用”:“querySrv”, “主机名”:“_mongodb._tcp.foo-cluster.mongodb.net” }

  1. 我确保我的 firebase 计划设置为 Blaze,这样我就可以连接到 google 网络之外的任何客户端。
  2. 我在 mongodb atlas 仪表板中将函数的 IP 列入白名单,我还添加了“从任何地方连接”以确保。
  3. 我使用的是nodejs mongo驱动版本^3.1.0-beta4

有什么想法吗?谢谢。


从 Firebase Function 连接到 Atlas 时有一些注意事项。以下是返回连接的客户端实例以便在 FB 函数中进一步使用的正确方法:

import { MongoClient } from 'mongodb'

const uri = 'mongodb://<USER>:<PASSWORD>@foo-shard-00-00-xxx.gcp.mongodb.net:27017,foo-shard-00-01-xxx.gcp.mongodb.net:27017,foo-shard-00-02-xxx.gcp.mongodb.net:27017/test?ssl=true&replicaSet=FOO-shard-0&authSource=admin&retryWrites=true'

let client

export default async () => {

    if (client && client.isConnected()) {
        console.log('DB CLIENT ALREADY CONNECTED')

    } else try {
        client = await MongoClient.connect(uri, { useNewUrlParser: true })
        console.log('DB CLIENT RECONNECTED')
    }

    catch (e) {
    throw e
    }

    return client
}

解释:

  1. 据报道,如果您使用的是Spark计划。如果您尚未升级到 Blaze,请务必升级到 Blaze。

  2. uristring – 从 Firebase 连接到 Atlas 时不应使用缩短的 url 格式。由于某种原因,只有旧的长 url 格式才能在 firebase 中可靠地工作。

  3. client变量 – 您应该定义client变量在导出范围之外,然后在函数内部将连接的客户端实例分配给它(仅当尚未分配时)。这将防止在每次函数调用时重新连接客户端。 Firebase 功能有无国籍的,但不完全是。它们只会在一段时间不活动后才会关闭。这意味着连接将持续一段时间。来自文档 https://cloud.google.com/functions/docs/bestpractices/tips#use_dependencies_wisely:如果在全局范围内声明变量,则其值可以在后续调用中重用,而无需重新计算。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

从 firebase 函数连接到 MongoDB Atlas 的相关文章

随机推荐

  • JAXB:类转换异常,但类具有相同的名称

    我有一个有趣的问题 当我启动 glassfish 服务器时 一切正常 但是 我更改了一些代码并发布了服务器 然后运行我的客户端 SistemGirisClientKullaniciDogrula 应用程序抛出此异常 java lang Cl
  • UnicodeDecodeError:“utf-8”编解码器无法解码位置 34 中的字节 0xe3:无效的连续字节

    我想用以下代码在 python 文件中打开一些波斯语文本文件 for line in codecs open 0001 txt encoding UTF 8 lines appends line 但它给了我这个错误 gt Traceback
  • Primefaces - 用于数据表中实时过滤的自定义组件

    PrimeFaces 对 p dataTable 的过滤器做得非常好 UX 网站很棒 因为过滤器字段位于列标题中 因此毫无疑问您正在过滤什么 并且它正在实时工作 数据会随着您的输入而变化 好吧 只有当您短暂停顿时 但它在我的意见正是用户所期
  • ASP.NET MVC Html 帮助程序

    我尝试创建一些 Html Helpers 它们将具有开始标记和结束标记 其中将包含其他内容 如 Html BeginForm 那样 例如 在 Razor 中 我们可以使用 Html BeginForm 帮助器 其语法如下 using Htm
  • 如何将外部JS脚本添加到VueJS组件中?

    我必须为支付网关使用两个外部脚本 现在两者都被放入index html file 但是 我不想在开始时加载这些文件 仅当用户打开特定组件时才需要支付网关 using router view 有办法实现这个目标吗 Thanks 解决这个问题的
  • 如何手动填充 ViewModel(不使用 AutoMapper!)

    我知道有很多关于这个主题的帖子 但我找不到一个可以帮助我做我想做的事情 我知道我最终会使用 Automapper 但在开始使用它之前 我想学习如何手动执行操作 我想创建一个 ViewModel 通过存储库用我的实体中的值填充它并将其发送到我
  • 从 Mathematica 中的 Web 设置用户代理导入

    当我使用 Mathematica 连接到我的网站时 Import mysite Data 并查看我的 Apache 日志 我看到 99 XXX XXX XXX 22 May 2011 19 36 28 0200 GET HTTP 1 1 2
  • 我可以向 JLabel 添加操作侦听器吗?

    我想用 JLabel 替换 JButton 并且希望我的代码在单击 JLabel 时执行某些操作 当我拥有 JButton 时 我使用操作侦听器来处理按钮上的点击 myButton addActionListener new clicksL
  • 如何在Robot Framework中将图像添加到html日志中?

    如何将图像添加到机器人框架的html日志中 我想在 Robot Framework 的 html 日志中添加一些图片 有人可以对此有一些想法吗 Keyword Log来自内置库有html参数可能可以满足您的需要 参见文档 http robo
  • DDD:通过身份引用聚合根内的实体

    我一直在寻找正确的参考方式entities位于一个聚合根 当我们只得到他们的身份来自 URL 参数 我问了一个上一个问题 https stackoverflow com questions 7196820 update an entity
  • C++ 方法调用中前导“::”的目的是什么[重复]

    这个问题在这里已经有答案了 我一直在使用 Boost 库 在 Boost Exception 中 我注意到如下代码 define BOOST THROW EXCEPTION x boost throw exception x 只是出于好奇
  • 避免控制台消息形式封装函数

    我正在使用一个包函数 coreenv 来自 seewave 它在控制台中创建一条 请稍候 消息 正如我反复所说的那样 该消息非常烦人 所以 我需要一种方法 从我的代码中 暂时禁止控制台消息 OR 访问功能代码并取消消息行 以下不是我的真实代
  • 为什么 JSON 比 XML 更轻量?

    我发现 JSON 和 XML 之间的区别 因为 两者都是为了系统之间的数据交换 但是JSON和XML之间有一个很大的区别 即JSON比XML更轻量级 但我无法找到 JSON 轻量级的真正原因 是什么让 JSON 变得轻量级 我发现的一个答案
  • 在 Mac OS X 上使用 pip 安装 pycrypto 时出现 Broken Pipe 错误

    我正在尝试通过 pip 在 OS X 上安装 pycrypto 版本 2 3 当编译器尝试编译 MD2 c 时 我收到 Broken pipeline 错误 使用 easy install 时我遇到了非常类似的错误 这是我收到的错误 bas
  • 在 Three.js 中针对“子场景”进行光线投射

    因此 我正在使用 Three js 示例中的 webgl interactive cubes html 并且我有一个相对简单的问题 是否可以测试光线与对象的子对象的相交 例如 如果我做类似的事情 for var i 0 i lt 2000
  • IPython 的历史向后搜索未按预期工作

    IPython 的history search backward功能是我最喜欢的功能之一 history search backward允许您键入命令的一部分 然后在阅读行历史记录中向后搜索以该命令的该部分开头的命令 默认情况下 我相信 这
  • Kafka分区中消息分布不均匀

    我有一个主题 有 10 个分区 1 个消费者组 有 4 个消费者 工作线程大小为 3 我可以看到分区中的消息分布不均匀 一个分区有太多数据 而另一个分区是空闲的 如何让我的生产者将负载均匀分配到所有分区 以便所有分区都得到正确利用 根据De
  • VBscript 正则表达式替换

    我不知道为什么这仅适用于找到的最后一个实例 而不是我所期望的所有实例 任何帮助表示赞赏 输入字符串 a href http www scirra com target blank http www scirra com a br br a
  • Windows 应用程序认证失败通用 Windows 应用程序 10

    我使用 Html CSS 和 JS 开发了一个 Windows 10 通用应用程序 为了允许内联脚本 我使用 ms appx web 上下文 并将 ms appx web login html 设置为清单中的起始页 我已在清单文件中添加了
  • 从 firebase 函数连接到 MongoDB Atlas

    我正在尝试从 firebase 函数连接到 mongodb atlas 例如 export default async gt try const url mongodb srv foo email protected cdn cgi l e