node.js - Mongoose 使用 SSL digital ocean 与 CA_CERT 连接

标签 node.js mongodb mongoose digital-ocean

如何使用 mongoose 连接 mongodb 和 digital ocean 数据库。我试过这种方式它不起作用。虽然在本地它说 Error: ENAMETOOLONG: name too long, open to the CA_CERT.请指导

mongoose
  .connect(process.env.HOST, {
    useNewUrlParser: true,
    useCreateIndex: true,
    ssl: true,
    sslCA: process.env.CA_CERT.replace(/\\n/g, '\n')
  })

最佳答案

以下方法对我有用

const mongoose = require("mongoose");
const colors = require("colors");
const path = require("path");

module.exports = async (server) => {
  try {
    let mongoCertPath = path.resolve("./config/ca-certificate.crt");
    if (process.env.CA_CERT) {
      fs.writeFileSync(mongoCertPath, process.env.CA_CERT);
    }
    await mongoose.connect(process.env.MONGO_URI, {
      useNewUrlParser: true,
      useUnifiedTopology: true,
      tlsCAFile: mongoCertPath
    });
    console.log("mongo connection successful..".yellow);
    server.listen(process.env.PORT || 5000, () =>
      console.log(
        `server running on ${process.env.NODE_ENV} mode, port ${process.env.PORT}..`
          .yellow
      )
    );
  } catch (error) {
    console.log("mongo connection failed..".red);
    console.log(error);
    process.exit(1);
  }
};

我的 .env 看起来像这样

MONGO_URI = mongodb+srv://doadmin:xxxxxx@db-mongodb-blrxx1-xxxxx-xxxxx.mongo.ondigitalocean.com/admin?authSource=admin&replicaSet=db-mongodb-blr1-xxxxx&tls=true

关于node.js - Mongoose 使用 SSL digital ocean 与 CA_CERT 连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68405290/

相关文章:

node.js - 将 DirectX Hwnd 嵌入到 NodeJS 中?

node.js - 如果数组存在,如何调用 $addToSet,如果数组不存在,则如何在一个查询中调用 $set?

node.js - 如何发送二进制数据以响应 node.js 服务器

node.js - 通过 Mongoose 使用 req.body 更新和/或添加数组元素属性?

node.js - 使用 Mongoose 库创建查询(查找数组中的对象)

typescript - 为什么这不是有效的 TypeScript?

javascript - Node.js:Express.js 设置保持事件状态

node.js 中的 Django 密码

node.js - 无法窥探原始值;在 nestJS 中给出未定义

node.js - 等待 Mongoose 查询完成