Heroku错误:架构无效,预期为`mongodb`或`mongodb + srv`

时间:2019-02-22 02:54:17

标签: node.js mongodb heroku

我的应用程序能够在本地连接到MongoDB,但是在heroku日志上却出现此错误:

错误:无效的架构,预期为mongodbmongodb+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));

配置/键:

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 :(得分:1)

好吧,您输入的生产密钥不正确。

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

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

答案 1 :(得分:0)

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

foreach($json["descriptions"] as $value)
{
    if($value['class'] == '3')
        $names[] = $value['name'];
}
return $names;

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

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