Mongoose - Почему мы устанавливаем "mongoose.Promise = global.Promise" при настройке модуля мангуста?

Я работаю с Mongoose. Я видел, как многие разработчики сделали следующую команду:

mongoose.Promise = global.Promise;

Затем мне было любопытно посмотреть, какова первоначальная ценность mongoose.Promise. mongoose.Promise. Я ввел в свой редактор следующую команду:

const mongoose = require("mongoose");

console.log("promise: ", mongoose.Promise);

Моя консоль вернула мне:

Обещание: функция Promise() {[native code]}

Хорошо, так зачем делать команду mongoose.Promise = global.Promise поскольку обещание Mongoose уже возвращает собственный код? Я не понимаю смысла, если кто-то может помочь нам понять, было бы здорово,

Спасибо

Ответы

Ответ 1

Это устаревший код из старых примеров, который не нужен в Mongoose 5.

Mongoose 4 полагался на собственную реализацию обещаний, mpromise. mongoose.Promise Promise не обязательно Promise глобально.

В документации Mongoose 4 говорится:

Mongoose 5.0 будет использовать встроенные обещания по умолчанию (или bluebird, если исходные обещания отсутствуют), но все равно будет поддерживать подключение к вашей собственной ES6-совместимой библиотеке обещаний. Mongoose 5.0 не будет поддерживать mpromise.

Хотя утверждение о Синей Птице больше не верно; Mongoose 5 отказался от поддержки версий Node, у которых нет собственных обещаний.

mongoose.Promise = global.Promise;

может все еще быть необходимо, если global.Promise был назначен с другой реализацией (например, Bluebird) после импорта Mongoose, хотя лучше было бы вместо этого назначить global.Promise = Bluebird ранее.

Ответ 2

Если мы хотим использовать mongoose в разных позициях внутри кодов, это должно рассматриваться как глобальный режим, поэтому нам нужно установить mongoose как:

mongoose.Promise = global.Promise;

Ответ 3

мы использовали именно в тот момент, когда мы хотим подключиться к базе данных MongoDB:

var mongoose = require('mongoose');

var mongoDB = ' database url ';

mongoose.connect(mongoDB);

mongoose.Promise = global.Promise;

mongoose.connection.on('error',console.error.bind(console, 'MongoDB connection error:'));

вам нужно создать схему и сделать свою собственную модель после

Ответ 4

Во-первых, mongoose использует Promise для приложений Async. В новых версиях это может быть:

mongoose.connect("URL").then("what you need to happen after the connection is done").catch("when the error happened")

Поэтому я использовал обещание и глобальное использование mongoose где угодно в качестве Async при написании mongoose.