Ошибка Heroku: неверная схема, ожидаемый `mongodb` или` mongodb + srv` - PullRequest
0 голосов
/ 22 февраля 2019

Мое приложение может подключаться к MongoDB локально, но в логах heroku я получаю эту ошибку:

Ошибка: неверная схема, ожидаемая mongodb или mongodb+srv

Этокак выглядит мое соединение с mongodb в моем файле server.js:

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

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

config / keys:

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"
};

Любая помощь с благодарностью

Ответы [ 2 ]

0 голосов
/ 22 февраля 2019

Что ж, вы неправильно используете производственные ключи.

process.env - это объект, содержащий переменные env в качестве ключа и их значения.поэтому вместо того, чтобы помещать их в строку, вы должны удалить строку и рассматривать ее как объект.как показано ниже:

module.exports = {
  mongoURI: process.env.MONGO_URI,
  secretOrKey: process.env.SECRET_OR_KEY
};
0 голосов
/ 22 февраля 2019

Обычно я так общаюсь с мангустом.

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);
      }
    });
  });
};
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...