Ошибка Атласа MongoDB: неверная схема, ожидаемый mongodb - PullRequest
0 голосов
/ 26 июня 2019

Я запускаю учебник Hello World в GCP.И я застреваю на шаге server.js.

Код server.js следующий:

'use strict';

const mongodb = require('mongodb');
const http = require('http');
const nconf = require('nconf');
let uri = 'mongodb+srv://my_name:<mypassword>@mydatabase-clr75.gcp.mongodb.net/test?retryWrites=true&w=majority';
if (nconf.get('mongoDatabase')) {
  uri = `${uri}/${nconf.get('mongoDatabase')}`;
}
console.log(uri);

mongodb.MongoClient.connect(uri, (err, db) => {
  if (err) {
    throw err;
  }

  // Create a simple little server.
  http.createServer((req, res) => {
    if (req.url === '/_ah/health') {
      res.writeHead(200, {
        'Content-Type': 'text/plain'
      });
      res.write('OK');
      res.end();
      return;
    }

    const collection = db.collection('Messages');
    var datetime = new Date();
    const msg = {
      msgDescription: '\nHello World received on ' + datetime
    };

    collection.insert(msg, (err) => {
      if (err) {
        throw err;
      }

      // push out a range
      let msglist = '';
      collection.find().toArray((err, data) => {
        if (err) {
          throw err;
        }
        data.forEach((msg) => {
          msglist += `${msg.msgDescription}; `;
        });

        res.writeHead(200, {
          'Content-Type': 'text/plain'
        });
res.write('Messages received so far:\n');
        res.end(msglist);
      });
    });
  }).listen(process.env.PORT || 8080, () => {
    console.log('started web process');
  });
});

Я получаю сообщение об ошибке, как показано ниже:

mongodb + srv: // my_name: @ mydatabase-clr75.gcp.mongodb.net / test? RetryWrites = true & w = Большинство /home/herboratory/node_modules/mongodb/lib/url_parser.js:19 выбросить новую ошибку ('неверная схема, ожидаемый mongodb');^ Ошибка: неверная схема, ожидаемый mongodb в module.exports (/home/herboratory/node_modules/mongodb/lib/url_parser.js:19:11) при подключении (/home/herboratory/node_modules/mongodb/lib/mongo_client.js:486: 16) в Function.MongoClient.connect (/home/herboratory/node_modules/mongodb/lib/mongo_client.js:250:3) в Object.(/home/herboratory/server.js:12:21) в файле Module._compile (module.js: 653: 30) в Object.Module._extensions..js (module.js: 664: 10) в Module.load (module.js: 566: 32) в tryModuleLoad (module.js: 506: 12) в Function.Module._load (module.js: 498: 3) в Function.Module.runMain (module.js: 694: 10) npmERR!код ELIFECYCLE npm ERR!errno 1 npm ERR!test@1.0.0 start: node server.js npm ERR!Статус выхода 1 npm ERR!нпм ERR!Ошибка при запуске сценария test@1.0.0.нпм ERR!Это, вероятно, не проблема с npm.Вероятно, есть дополнительные выходные данные регистрации.нпм ERR!Полный журнал этого прогона можно найти в: npm ERR!
/home/herboratory/.npm/_logs/2019-06-26T03_58_26_823Z-debug.log

Мне было интересно, это должнобыть ошибкой формата после прочтения некоторых других постов здесь с той же строкой ошибки, поэтому я попробовал '...', "..." и без кавычек, но все еще остается ошибкой.Не могли бы вы указать мне, где ошибка?

Кроме URI, есть ли где-то еще, что мне также нужно изменить внутри кода?Насколько я знаю из инструкции, мне просто нужно вставить собственную строку подключения Atlas.

Большое спасибо.

1 Ответ

0 голосов
/ 26 июня 2019

Ошибка invalid schema, expected mongodb означает, что вы используете устаревшую версию драйвера узла.Старый драйвер не может проанализировать новую схему mongodb+srv URI.

Поддержка схемы mongodb+srv была добавлена ​​в версию 3.0 драйвера узла в этом билете: NODE-1145 .

Обновите драйвер узла, используя:

$ npm install mongodb

, и ошибка должна исчезнуть.

...