javascript - 如何从firebase云功能连接到MongoDb Atlas

标签 javascript mongodb firebase google-cloud-functions mongodb-atlas

我正在尝试关注this答案是从云函数连接到 mongodb atlas 数据库。

我使用上面答案中的代码:

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
}

然后我有一个这样的函数:

export const myFunction = functions.region('europe-west1').https.onRequest((request, response) => {
console.log(client.isConnected());
});

当我在本地运行 firebaseserve 时,我没有看到“DB CLIENT ALREADY CONNECTED”或“DB CLIENT RECONNECTED”,这意味着未调用匿名函数。当我尝试访问 myFunction 内的 client 变量时,出现错误。

我现在正在学习 Node,所以这可能是一个简单的问题。谢谢,

最佳答案

如果您有一些代码要在 Cloud Functions 中运行,则需要调用它。不可能简单地声明或导出某些函数并期望它在不调用它的情况下运行。如果您希望某些内容在代码的全局范围内运行,请不要将其包装在函数中,或者在全局范围内调用该函数。

关于javascript - 如何从firebase云功能连接到MongoDb Atlas,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57762540/

相关文章:

firebase - 如何在不花钱的情况下检查 firestore 中是否存在具有给定 id 的文档?

angular - 订阅 ref.on (‘value’ 时出现 Firebase 错误,回调); |类型 'subscribe' 上不存在属性 '(a: DataSnapshot, b?: string) => any'

javascript - 干燥过滤?

javascript - 我的联系表单验证的小错误。电子邮件验证与我的其余代码纠缠不清

java - 使用 spring-boot 对 Rest 服务进行访问控制

mongodb - Meteor 使用带有 ID 数组的 $in 查找

ios - 如何检索另一个 firebase 子项中的子项(数组)

javascript - 如何在 JavaScript 中延迟重试异步函数?

javascript - jQuery根据选择下拉菜单显示/隐藏多个 'Other'输入字段

mongodb - 获取mongoDB中列的最大值