Mongodb и узел Получение ошибки при соединении с кластером?
Я пытаюсь соединиться с кластером mongoldb с помощью моего приложения узла. У меня mongodb версии 3.1.0.
Я скопировал строку подключения из mongodb, которая выглядит ниже.
mongodb://username:<PASSWORD>@clusterstring,clusterstring1,clusterstring2/dbname?ssl=true&replicaSet=replicaSet&authSource=admin&retryWrites=true
Но когда я пытаюсь подключиться, используя приведенную выше строку, я получаю сообщение об ошибке ниже.
MongoError: seed list contains no mongos proxies, replicaset connections requires the parameter replicaSet to be supplied in the URI o r options object, mongodb://server:port/db?replicaSet=name
Таким образом, приведенное выше сообщение дает мне две ошибки
- Список семян не содержит прокси mongos - не уверен, почему это происходит
- Replicaset должен быть предоставлен в URI или объекте опции - у меня есть replicaSet в моем URI. Не уверен, почему это происходит.
Если я установлю ssl = false, второе сообщение исчезнет, а первое останется.
Есть идеи, что я делаю не так?
В случае, если вы хотите знать, как я подключаюсь в моем приложении,
this is in config
module.exports = {
secret: 'sectreKey',
session: { session: false },
database: aboveconnectionstring
}
//the above values are passed here
module.exports = (mongoose, config) => {
const database = mongoose.connection;
mongoose.Promise = Promise;
mongoose.connect(config.database, {
promiseLibrary: global.Promise,
useNewUrlParser: true
});
database.on('error', error => console.log(`Connection to sample service database failed: ${error}`));
database.on('connected', () => console.log('Connected to sample Service database'));
database.on('disconnected', () => console.log('Disconnected from sample Service database'));
process.on('SIGINT', () => {
database.close(() => {
console.log('sampleVueService terminated, connection closed');
process.exit(0);
})
});
};
EDIT: Постановили
Я нашел ответ на вопрос переполнения стека ниже. Соединение кластера Mongoose с Mongo. Но оно не соединяется с параметром &retryWrites=true . Поэтому я удалил параметр и подключился успешно.
MongoError: Поле 'retryWrites' недопустимо для спецификации индекса. Спецификация: { name: "username_1", ключ: { username: 1 }, уникальный: true, фон: true, retryWrites: true }
Итак, моя новая база данных выглядит так:
module.exports = (mongoose, config) => {
if(config.database.indexOf('replicaSet') > - 1) {
dbOptions = {
db: {native_parser: true},
replset: {
auto_reconnect:false,
poolSize: 10,
socketOptions: {
keepAlive: 1000,
connectTimeoutMS: 30000
}
},
server: {
poolSize: 5,
socketOptions: {
keepAlive: 1000,
connectTimeoutMS: 30000
}
}
};
}
const database = mongoose.connection;
mongoose.Promise = Promise;
mongoose.connect(config.database, dbOptions);
database.on('error', error => console.log(`Connection to sample service database failed: ${error}`));
database.on('connected', () => console.log('Connected to sample Service database'));
database.on('disconnected', () => console.log('Disconnected from sample Service database'));
process.on('SIGINT', () => {
database.close(() => {
console.log('sampleVueService terminated, connection closed');
process.exit(0);
})
});
};
Надеюсь, что это помогает другим.
1 ответ
Ошибка может быть связана с версией mongoose и mongodb. Попробуйте запустить npm update или npx update, обновление пакетов устранило ошибку.