gpt4 book ai didi

node.js - 从 Google Cloud Functions Console 访问 MongoDB Atlas 集群

转载 作者:可可西里 更新时间:2023-11-01 09:07:17 24 4
gpt4 key购买 nike

我正在编写一个基本的 Google Cloud Function,它将从 MongoDB Atlas 查询 MongoDB 集群。我在 Google 控制台中编写,并且确定将 "mongodb": "^3.0.2"添加到 package.json 文件中的依赖项中。

这是函数(为了安全,我在 uri 中替换了有效密码等):

/**
* Responds to any HTTP request that can provide a "message" field in the
body.
*
* @param {!Object} req Cloud Function request context.
* @param {!Object} res Cloud Function response context.
*/
exports.myPackage = (req, res) => {
var MongoClient = require('mongodb').MongoClient;
var uri = "mongodb+srv://<USERNAME>:<PASSWORD>@<CLUSTER-NAME>-vtbhs.mongodb.net/test";
MongoClient.connect(uri, function(err, client) {
if (err) {
console.log('err');
console.log(err);
} else {
const collection = client.db("test").collection("devices");
}
});

res.status(200).send('Success');
}

我确定驱动程序是最新的,并且我直接从 Atlas 文档中复制了大部分代码。我已将 Atlas 的所有 IP 列入白名单以进行测试。

每次函数运行时,我都会在连接回调中收到以下错误:

"{ Error: querySrv ESERVFAIL _mongodb._tcp.<CLUSTER-NAME>-vtbhs.mongodb.net
at errnoException (dns.js:28:10)
at QueryReqWrap.onresolve [as oncomplete] (dns.js:219:19)
code: 'ESERVFAIL',
errno: 'ESERVFAIL',
syscall: 'querySrv',
hostname: '_mongodb._tcp.<CLUSTER-NAME>-vtbhs.mongodb.net' }"

我之前也遇到过这样的错误:

URI does not have hostname, domain name and tld at module.exports

尽管自从我在 Mongo 中调整了我的密码后,它似乎不再弹出(其中可能有一个非 html 编码的字符)。

在此先感谢您的帮助!

最佳答案

我遇到了完全相同的问题。运行 firebase deploy 后,MongoDB Atlas 和 mLab 连接均失败,但使用 firebase serve 在本地工作。

我认为有两个问题:

  1. 免费 Spark 计划禁用出站网络。您必须升级到 Blaze 计划(现收现付)才能执行此操作。我刚刚切换了等级,现在可以使用了。

The Spark plan allows outbound network requests only to Google-owned services. Inbound invocation requests are allowed within the quota. On the Blaze plan, Cloud Functions provides a perpetual free tier. The first 2,000,000 invocations, 400,000 GB-sec, 200,000 CPU-sec, and 5 GB of Internet egress traffic is provided for free each month. You are only charged on usage past this free allotment. Pricing is based on total number of invocations, and compute time. Compute time is variable based on the amount of memory and CPU provisioned for a function. Usage limits are also enforced through daily and 100s quotas. For more information, see Cloud Functions Pricing.

https://firebase.google.com/pricing/

你必须提供信用卡,但只要你保持在他们的数据配额之内,显然你就不会被收费。我会尝试一下,看看效果如何。

  1. 升级后,您的 MongoDB Atlas 连接可能仍然失败(但 mLab 字符串可以工作)。这是因为您的查询 URI 使用的是 Mongo 3.6 SRV 地址,而不是 Mongo 3.4 驱动程序的“mongodb://”协议(protocol)。尝试切换驱动程序版本,看看它是否有效。 enter image description here

关于node.js - 从 Google Cloud Functions Console 访问 MongoDB Atlas 集群,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48859035/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com