Мангуст connect бросает предупреждение

Я пишу приложение, подключенное к mongodb, и при подключении к серверу, как ниже, получаю предупреждение:

Db.прототип.метод аутентификации больше не будет доступен в следующем основном выпуске 3.x as MongoDB 3.6 разрешит аутентификацию только для пользователей в БД администратора и больше не будет разрешать несколько учетных данных в сокете. Пожалуйста, аутентифицируйтесь с помощью MongoClient.подключение с учетными данными auth.

мои коды как рев

import mongoose from 'mongoose';
import config from './config';
mongoose.connect(config.db.uri);

в конфиг.js

const config = {
    name: 'API',
    version: '0.0.1',
    env: process.env.NODE_ENV || 'development',
    port: process.env.PORT || 3000,
    base_url: process.env.BASE_URL || 'http://localhost:3000',
    db: {
        uri: 'mongodb://admin:harry123@127.0.0.1:27017/ai?authSource=admin',
    },
}

export default config;

Я использую узел v8.0.0 и Мангуст 4.10.5

4 ответов


это безобидное предупреждение и известный Мангуст вопрос. Подробные сведения см. В разделе поток мангуста, но начиная с mongoose 4.10.5 нет известного обходного пути, и это не должно влиять на функциональность вашего приложения.


предупреждение связано с тем, что драйвер MongoDB не одобряет API, используемый логикой подключения мангуста по умолчанию. Начиная с mongoose 4.11.1 вы можете использовать клиент mongo, установив , например

mongoose.connect(config.db.uri, { useMongoClient: true, /* other options */ })

напоминаем, что использование Mongo native client может иметь нежелательные эффекты, поэтому обязательно протестируйте все исчерпывающе
Подробнее здесь


Db.prototype.authenticate method will no longer be available in the next major release 3.x as MongoDB 3.6 will only allow auth against users in the admin db and will no longer allow multiple credentials on a socket. Please authenticate using MongoClient.connect with auth credentials.

Да, это безвредное предупреждение и известная проблема мангуста. как сказал @ Фу Нго

таким образом, вы можете уйти с этой проблемой, обновив до последней версии мангуста, которая выше 4.11.1.

после обновления версии, это предупреждение может появиться, если вы воспользовались варианты подключения.

he server/replset/mongos options are deprecated, all their options are supported at the top level of the options object [poolSize,ssl,sslValidate,sslCA,sslCert,sslKey,sslPass,sslCRL,autoReconnect,noDelay,keepAlive,connectTimeoutMS,family,socketTimeoutMS,reconnectTries,reconnectInterval,ha,haInterval,replicaSet,secondaryAcceptableLatencyMS,acceptableLatencyMS,connectWithNoPrimary,authSource,w,wtimeout,j,forceServerObjectId,serializeFunctions,ignoreUndefined,raw,bufferMaxEntries,readPreference,pkFactory,promiseLibrary,readConcern,maxStalenessSeconds,loggerLevel,logger,promoteValues,promoteBuffers,promoteLongs,domainsEnabled,keepAliveInitialDelay,checkServerIdentity,validateOptions,appname,auth]

В соответствии с сообщением об ошибке;

the server/replset/mongos options are deprecated, all their options are supported at the top level of the options object

таким образом, решение проблемы просто перемещает параметры настройки из сервер, replset, socketOptions, mongos и любые другие параметры иерархии до верхнего уровня объекта.

решение с примерами


я исправил эту проблему, просто используя MongoClient.соединитесь вместо мангуста.connect

const MongoClient = require('mongodb').MongoClient 

MongoClient.connect(config.uri, (err) => {
    if (err) {
        console.log('Could NOT connect to database: ', err);
    } else {
        console.log('Connected to database: ' + config.db);
    }
});