У меня странная проблема с Монго, которая выдает мне ошибки, которые я не могу решить. Это странно, потому что мой код все еще работает. Если я достигну своей конечной точки, я получу свои данные, все отлично, верно? Но я все равно предпочел бы, чтобы над мной не висела какая-то ошибка, которая может быть проблемой в будущем.
Я провел некоторое исследование этих ошибок в SO, в частности обнаружил: Необработанное отклонение обещания: ошибка: URL искажен, не может быть проанализирован и Неполная пара значений ключей для опции remote mongodb , но нет решений, которые могли бы сработать.
My Mongo - это версия 4.0.2. Я подключаюсь через Mongoose, v5.3.9.
Это ошибка:
(node:5305) DeprecationWarning: current URL string parser is deprecated, and will be removed in a future version. To use the new parser, pass option { useNewUrlParser: true } to MongoClient.connect.
connection error { MongoParseError: Incomplete key value pair for option
at parseQueryString (/Users/jonathankuhl/Documents/Programming/JavaScript/Vue/100daysv3/node_modules/mongodb-core/lib/uri_parser.js:387:13)
at parseConnectionString (/Users/jonathankuhl/Documents/Programming/JavaScript/Vue/100daysv3/node_modules/mongodb-core/lib/uri_parser.js:447:21)
at QueryReqWrap.dns.resolveTxt [as callback] (/Users/jonathankuhl/Documents/Programming/JavaScript/Vue/100daysv3/node_modules/mongodb-core/lib/uri_parser.js:127:7)
at QueryReqWrap.onresolve [as oncomplete] (dns.js:245:10)
name: 'MongoParseError',
[Symbol(mongoErrorContextSymbol)]: {} }
Вот код подключения, большая часть которого извлечена и изменена непосредственно из руководства по началу работы с Mongoose, поскольку я никогда раньше не использовал Mongoose:
const mongoose = require('mongoose');
const user = process.env.MONGO_USER;
const pw = process.env.MONGO_PW;
const uri = `mongodb+srv://${user}:${pw}@cluster0-vji0s.mongodb.net/100days?test?retryWrites=true`;
// wrap the connection in a closure so I can export it with the URI
function Connect(uri) {
return function() {
mongoose.connect(uri, {
auth: {
user: user,
password: pw
}
});
const db = mongoose.connection;
db.on('error', console.error.bind(console, 'connection error'));
db.once('open', ()=> {
console.log('\nSuccessfully connected to Mongo!\n');
});
}
}
const MongooseConnect = Connect(uri);
module.exports = MongooseConnect;
И на моем сервере (Express JS) я подключаюсь, как только мой сервер работает:
const MongooseConnect = require('./database.js');
//... other express stuff
app.listen(port, ()=> {
MongooseConnect();
console.log(`listening on port ${port}\n`)
});
Код работает, я подключаюсь и попадаю в свою базу данных, и просто отлично выполняю CRUD. Я не всегда получал эту ошибку (ну, не пару ключей, у меня всегда было предупреждение об устаревании, и я просто выбрасывал банку на потом), но я понятия не имею, что вызвало его изменение. Самые последние изменения, которые я сделал, были в том, чтобы переместить мои схемы в их собственную папку, я не понимаю, почему это может вызвать это. Я не знаю, что вызывает появление этих сообщений об ошибках или что нужно сделать, чтобы они исчезли. Все, что я пробовал в приведенных выше ссылках, не работает и не ухудшает ситуацию.
Любая помощь будет оценена
Кроме того, мое имя пользователя и пароль не используют никаких специальных символов, только цифры и буквы.