Подтвердить что ты не робот

Как установить useMongoClient (Mongoose 4.11.0)?

Это код, который я использую для подключения к моей базе данных:

private connectDatabase(databaseUri: string): Promise<Mongoose.Connection> {
    return Mongoose.connect(databaseUri).then(() => {
        debug('Connected to MongoDB at %O', databaseUri);
        return Mongoose.connection;
    });
}

Сегодня я обновил Mongoose до версии 4.11.0, и я получил это предупреждение при выполнении моих тестов:

(node:4138) DeprecationWarning: `open()` is deprecated in mongoose >= 4.11.0,
use `openUri()` instead, or set the `useMongoClient` option if using `connect()`
or `createConnection()`

Я не могу найти никакой информации о том, как "установить useMongoClient".

Вы, ребята, знаете, как?

4b9b3361

Ответ 1

Без Typescript вы можете в значительной степени игнорировать проблему и использовать Mongoose.connect(databaseUri, { useMongoClient: true }).

Если вы действительно хотите избежать предупреждения, избегайте версии 4.11.0.

Я обновлен до версии 4.11.1, и поскольку @types/mongoose @4.7.18 еще не обновлены, и они не упоминают поле useMongoClient в ConnectionOptions, вот как я импортировал модуль:

const Mongoose = require('mongoose');

И затем использовала эту функцию:

private connectDatabase(databaseUri: string): Promise<any> {
    return Mongoose.connect(databaseUri, { useMongoClient: true })
        .then(() => {
            console.log('Connected to MongoDB at ', databaseUri);
            return Mongoose.connection;
        })
        .catch(err => debug(`Database connection error: ${err.message}`));
}

Ответ 2

Вот как вы используете useMongoClient: mongoose.connect('mongodb://localhost/advisorDemoTestDB', { useMongoClient: true })

Ответ 3

Добавьте {useMongoClient: true} в качестве другого аргумента для подключения или создания метода соединения, его зависит от версии используемой вами мангусты.

// Using `mongoose.connect`...
var promise = mongoose.connect('mongodb://localhost/myapp', {
  useMongoClient: true,
  /* other options */
});
// Or `createConnection`
var promise = mongoose.createConnection('mongodb://localhost/myapp', {
  useMongoClient: true,
  /* other options */
});

Ответ 4

mongoose.connection.openUri('mongodb://127.0.0.1/camp_v12')

Кто-нибудь пробовал это? мое устаревшее предупреждение исчезло, когда я использую это, это было из документации

http://mongoosejs.com/docs/connections.html

Ответ 5

Самым простым решением для этого было бы открыть ваш терминал, сменить каталог на ваш корневой проект (папка, где package.json есть)

Run:
npm remove mongoose

то

npm install [email protected] --save

проблема решена.

Обновление не всегда является лучшим вариантом.

http://mongoosejs.com/docs/connections.html

Ответ 6

Как говорят многие ответы, добавление { useMongoClient: true } в аргументе параметров к методу connect или createConnection решит проблему.

Например,

// With mongoose.connect method
mongoose.connect('mongodb://localhost/app', { useMongoClient: true });

// With createConnection method
mongoose.createConnection('mongodb://localhost/app', { useMongoClient: true });

Но что такое MongoClient?

Начиная с версии 1.2 драйвера MongoDB Node.js, был представлен новый класс подключений MongoClient с одинаковыми именами во всех официальных драйверах.

Новый класс подключения MongoClient подтверждает все записи в MongoDB, в отличие от существующего класса подключения к БД, у которого отключены подтверждения.

Поэтому { useMongoClient: true } говорит moongoose использовать новый класс подключения, а не старый

Для получения дополнительной информации нажмите здесь

Ответ 7

Подключитесь к MongoDB с Mongoose 4.11.x(протестирован как с одним экземпляром mLab, так и с набором MongoDB Atlas):

const mongoose = require('mongoose');

mongoose.Promise = global.Promise;

const options = {
  promiseLibrary: global.Promise,
  useMongoClient: true,
};

function connect() {
  mongoose.connect(URI, options)
    .then(function() {
      const admin = new mongoose.mongo.Admin(mongoose.connection.db);
      admin.buildInfo(function(err, info) {
        if (err) {
          console.err(`Error getting MongoDB info: ${err}`);
        } else {
          console.log(`Connection to MongoDB (version ${info.version}) opened successfully!`);
        }
      });
    })
    .catch((err) => console.error(`Error connecting to MongoDB: ${err}`));
}

module.exports = connect;

Создать модель:

const mongoose = require('mongoose');

const userSchema = new mongoose.Schema({...});

module.exports = mongoose.model('User', userSchema);

Ответ 8

В соответствии с mongoose документация, так можно установить useMongoClient.

function connectDatabase(databaseUri){
    var promise = mongoose.connect('mongodb://localhost/myapp', {
        useMongoClient: true,
    });
    return promise;
}

Ответ 9

Самое простое исправление для этого; "npm remove mongoose", тогда проблема "npm install [email protected] --save" решена. Модернизация не всегда является лучшим вариантом.

Ответ 10

Самое простое исправление для этого:

Запустите эту команду в корневой папке проекта через терминал:

npm remove mongoose

npm install [email protected] --save

Проблема решена.

Обновление не всегда является лучшим вариантом.

https://github.com/Automattic/mongoose/issues/5399

Ответ 11

var mongoose = require('mongoose');
mongoose.connect('mongodb://localhost/starbucks', { 
    useMongoClient: true 
});
var db = mongoose.connection;
db.on('error', console.error.bind(console, 'connection error:'));
db.once('openUri', function() {
    // we're connected!
});

Ответ 12

Ошибка:

(node: 1652) Устаревшее предупреждение: open() устарело в mongoose >= 4.11.0, вместо этого используйте openUri() или установите параметр useMongoClient при использовании connect() или createConnection().

Решение: Чтобы установить useMongoClient: true в свойстве соединения

var promise = mongoose.connect('mongodb://localhost/myapp', {
  useMongoClient: true,
  /* other options */
});

См. http://mongoosejs.com/docs/connections.html#use-mongo-client теперь прослушивание запроса

Ответ 13

Он работает для меня с помощью Typescript:

var dbOpt : any = { 
    useMongoClient: true
} 
mongoose.connect(dbURI, dbOpt);