【问题标题】:Heroku Error: Invalid schema, expected `mongodb` or `mongodb+srv`Heroku 错误:架构无效,预期为 `mongodb` 或 `mongodb+srv`
【发布时间】:2019-02-22 11:38:15
【问题描述】:

我的应用程序能够在本地连接到 MongoDB,但是在 heroku 日志中我收到了这个错误:

错误:架构无效,应为 mongodbmongodb+srv

这就是我在 server.js 文件中与 mongodb 的连接:

// // DB config
const db = require("./config/keys").mongoURI;

// // Connect to MongoDB
mongoose
  .connect(db)
  .then(() => console.log("MongoDB connected"))
  .catch(err => console.log(err));

配置/键:

if (process.env.NODE_ENV === "production") {
  module.exports = require("./keys_prod");
} else {
  module.exports = require("./keys_dev");
}

keys_dev:

module.exports = {
  mongoURI:
    "mongodb://jenn123:jenn123@devconnect-shard-00-00-acrk4.mongodb.net:27017,devconnect-shard-00-01-acrk4.mongodb.net:27017,devconnect-shard-00-02-acrk4.mongodb.net:27017/test?ssl=true&replicaSet=devconnect-shard-0&authSource=admin&retryWrites=true",
  secretOrKey: "secret"
};

keys_prod:

module.exports = {
  mongoURI: "process.env.MONGO_URI",
  secretOrKey: "process.env.SECRET_OR_KEY"
};

非常感谢任何帮助

【问题讨论】:

    标签: node.js mongodb heroku


    【解决方案1】:

    好吧,你做错了生产密钥。

    process.env 是一个包含 env 变量作为键及其值的对象。 因此,您不必将它们放入字符串中,而是必须删除字符串并将其视为对象。如下:

    module.exports = {
      mongoURI: process.env.MONGO_URI,
      secretOrKey: process.env.SECRET_OR_KEY
    };
    

    【讨论】:

      【解决方案2】:

      这通常是我与猫鼬联系的方式。

      const mongoose = require('mongoose');
      const dotenv = require('dotenv').config();
      
      let db = mongoose.connection;
      
      mongoose.connect('your connection URL here', {
          auth: {
            user: "Your username",
            password: "Your password"
          }
        })
        .then(() => {
          console.log('connection successful')
          db = mongoose.connection;
          module.exports = db;
        })
        .catch((err) => {
          console.error(err)
        });
      

      然后您可以在这样的文件中使用它(假设您已经定义了一个作业模式并正在导入它):

      const db = require('./db'); // provides the mongoDB connection
      const mongoose = require('mongoose');
      const ObjectId = require('mongoose').Types.ObjectId;
      const Job = require('./schemas/jobs').Job
      
      
      module.exports.createJob = function (newJob) {
          const job = new Job(newJob);
          return new Promise((resolve, reject) => {
          job.save((err, data) => {
            if (err) {
                reject(err);
            } else {
                resolve(data);
            }
          });
        });
      };
      

      【讨论】:

        猜你喜欢
        • 2019-11-07
        • 2016-06-19
        • 1970-01-01
        • 2016-02-17
        • 2015-05-22
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2022-09-25
        相关资源
        最近更新 更多