首页 > 解决方案 > 如何使用 Cloudflare 工作人员在 MongoDB 中进行查询?

问题描述

我正在尝试使用 mongodb 查询 mongodb simple findOne。Cloudflare 工作人员提供 10 毫秒 CPU 时间,但在预览/发布期间抛出错误

我试过安装这些 npm 模块

npm i mongodb, mongodb-core, dgram, fs
var MongoClient = require('mongodb').MongoClient;
try{
    var db = await MongoClient.connect('mongodb+srv://mongoURL',{ useNewUrlParser: true,useUnifiedTopology: true });
    var dbo = db.db("test");
    var result = await dbo.collection("testcollection").findOne()
    const init = {
        status: 200,
        headers: { "Access-Control-Allow-Origin": "*", 'content-type': 'application/json' },
    }
    return new Response(JSON.stringify(result), init)
} catch(e) { console.log(e); return new Response(JSON.stringify(result), init)  }

抛出的错误在这里 - https://pastebin.com/xMKKjdZF

标签: mongodbwebpack-2cloudflare-workerscloudflare-apps

解决方案


目前,Cloudflare Workers 不支持原始 TCP/UDP,仅支持 HTTP/HTTPS。因此,您只能连接到提供 HTTP(S) 接口的数据库。MongoDB 的协议不是基于 HTTP 的,因此您需要找到某种可以放在它前面的 HTTP API 代理。(另请注意,Cloudflare Workers 不是基于 Node.js,因此通常使用 Node 的系统 API 的 Node 模块将无法工作。)


推荐阅读