【发布时间】:2019-06-07 17:34:59
【问题描述】:
我正在尝试在我使用本地 MongoDB 实例的项目中使用 MongoDB Atlas。当我将 mongo URI 从 localhost 更改为 MongoDB Atlas 连接字符串时,我收到 Cyclic Dependency 错误。
这里是 mu mongoose 配置文件:
const mongoose = require('mongoose');
const util = require('util');
const debug = require('debug')('express-mongoose-es6-rest-api:index');
const config = require('./config');
// connect to mongo db
const mongoUri = config.mongo.host;
mongoose.connect(mongoUri, { useNewUrlParser: true });
mongoose.connection.on('error', () => {
throw new Error(`unable to connect to database: ${mongoUri}`);
});
// print mongoose logs in dev env
if (config.MONGOOSE_DEBUG) {
mongoose.set('debug', (collectionName, method, query, doc) => {
debug(`${collectionName}.${method}`, util.inspect(query, false, 20), doc);
});
}
我的 config.js:
const Joi = require('joi');
// require and configure dotenv, will load vars in .env in PROCESS.ENV
require('dotenv').config();
// define validation for all the env vars
const envVarsSchema = Joi.object({
NODE_ENV: Joi.string()
.allow(['development', 'production', 'test', 'provision'])
.default('development'),
SERVER_PORT: Joi.number()
.default(4040),
MONGOOSE_DEBUG: Joi.boolean()
.when('NODE_ENV', {
is: Joi.string().equal('development'),
then: Joi.boolean().default(true),
otherwise: Joi.boolean().default(false)
}),
SESSION_SECRET: Joi.string().required()
.description('Session Secret required to sign'),
MONGO_HOST: Joi.string().required()
.description('Mongo DB host url'),
MONGO_PORT: Joi.number()
.default(27017)
}).unknown()
.required();
const { error, value: envVars } = Joi.validate(process.env, envVarsSchema);
if (error) {
throw new Error(`Config validation error: ${error.message}`);
}
const config = {
env: envVars.NODE_ENV,
port: envVars.SERVER_PORT,
mongooseDebug: envVars.MONGOOSE_DEBUG,
sessionSecret: envVars.SESSION_SECRET,
frontend: envVars.MEAN_FRONTEND || 'angular',
mongo: {
host: envVars.MONGO_HOST,
port: envVars.MONGO_PORT
}
};
module.exports = config;
};
module.exports = config;
我的 .env 文件:
NODE_ENV=development
SERVER_PORT=4040
SESSION_SECRET=SECRET
MONGO_HOST=mongodb+srv://Manman:MyPassword@clusterHU-kt9vc.mongodb.net/test?retryWrites=true
MEAN_FRONTEND=angular
我能做些什么来摆脱这个错误?
【问题讨论】:
-
如果你有类似的问题,我看到this github issue 试图解决这个问题。我会研究它并尝试找到解决我问题的方法。如果您在我之前找到一个,请在此处发布您的答案,谢谢。
标签: mongodb mongoose circular-dependency