Spec-Zone.ru › Mongoose

Подключение

Connection()

Параметры:
  • base «Mongoose» экземпляр mongoose
Наследуется от:
  • «NodeJS EventEmitter»

Конструктор подключения

По практическим соображениям, подключение равно Db.

Connection.prototype.asPromise()

Возвращает:
  • «Promise»

Возвращает промис, который выполняется успешно, когда это подключение успешно подключается к MongoDB, или отклоняется, если это подключение не удалось подключиться.

Пример:

const conn = await mongoose.createConnection('mongodb://127.0.0.1:27017/test').
  asPromise();
conn.readyState; // 1, means Mongoose is connected

Connection.prototype.client

Тип:
  • «свойство»

Экземпляр MongoClient, используемый этим подключением для связи с MongoDB. Mongoose автоматически устанавливает это свойство при открытии подключения.

Connection.prototype.close()

Параметры:
  • [force] «Boolean» необязательно
Возвращает:
  • «Promise»

Закрывает подключение

Connection.prototype.collection()

Параметры:
  • name «String» коллекции
  • [options] «Object» необязательные параметры коллекции
Возвращает:
  • «Collection» экземпляр коллекции

Возвращает экземпляр коллекции, создавая её, если она не кэширована. Этот метод возвращает тонкий обёртку над [коллекцией драйвера MongoDB Node.js](коллекцией драйвера MongoDB Node.js). Использование коллекции обходит Mongoose-средства, валидацию и преобразование, позволяя использовать функциональность драйвера MongoDB Node.js напрямую.

Connection.prototype.collections

Тип:
  • «свойство»

Хэш коллекций, связанных с этим подключением

Connection.prototype.config

Тип:
  • «свойство»

Хэш глобальных параметров, связанных с этим подключением

Connection.prototype.createCollection()

Параметры:
  • collection «string» Коллекция для создания
  • [options] «Object» см. документацию драйвера MongoDB
Возвращает:
  • «Promise»

Помощник для createCollection(). Явно создаёт заданную коллекцию с указанными параметрами. Используется для создания ограниченных коллекций и видов из mongoose.

Параметры передаются без изменений в функцию драйвера MongoDB createCollection()

Connection.prototype.createCollections()

Параметры:
  • continueOnError «Boolean» Если true, продолжит создание коллекций и создаст новый класс ошибок для коллекций, в которых произошли ошибки.

Вызывает createCollection() для моделей в последовательности.

Connection.prototype.db

Тип:
  • «свойство»

Экземпляр mongodb.Db, устанавливаемый при открытии подключения

Connection.prototype.deleteModel()

Параметры:
  • name «String|RegExp» если строка, имя модели для удаления. Если регулярное выражение, удаляет все модели, чьё имя соответствует регулярному выражению.
Возвращает:
  • «Connection» this

Удаляет модель с именем name из этого подключения, если она существует. Вы можете использовать эту функцию для очистки любых моделей, созданных в ваших тестах, чтобы предотвратить OverwriteModelErrors.

Пример:

conn.model('User', new Schema({ name: String }));
console.log(conn.model('User')); // Model object
conn.deleteModel('User');
console.log(conn.model('User')); // undefined

// Usually useful in a Mocha `afterEach()` hook
afterEach(function() {
  conn.deleteModel(/.+/); // Delete every model
});

Connection.prototype.destroy()

Параметры:
  • [force] «Boolean»

Уничтожить подключение. Аналогично .close, но также удаляет подключение из списка Mongoose connections и предотвращает его повторное открытие.

Connection.prototype.dropCollection()

Параметры:
  • collection «string» Коллекция для удаления
Возвращает:
  • «Promise»

Помощник для dropCollection(). Удаляет заданную коллекцию, включая все документы и индексы.

Connection.prototype.dropDatabase()

Возвращает:
  • «Promise»

Помощник для dropDatabase(). Удаляет заданную базу данных, включая все коллекции, документы и индексы.

Пример:

const conn = mongoose.createConnection('mongodb://127.0.0.1:27017/mydb');
// Deletes the entire 'mydb' database
await conn.dropDatabase();

Connection.prototype.get()

Параметры:
  • key «String»

Получает значение параметра key. Эквивалентно conn.options[key]

Пример:

conn.get('test'); // returns the 'test' value

Connection.prototype.getClient()

Возвращает:
  • «MongoClient»

Возвращает экземпляр драйвера MongoDB MongoClient, используемый этим подключением для связи с MongoDB.

Пример:

const conn = await mongoose.createConnection('mongodb://127.0.0.1:27017/test').
  asPromise();

conn.getClient(); // MongoClient { ... }

Connection.prototype.host

Тип:
  • «свойство»

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

Пример:

mongoose.createConnection('mongodb://127.0.0.1:27017/mydb').host; // "127.0.0.1"

Connection.prototype.id

Тип:
  • «свойство»

Идентификатор числа для этого подключения. Используется для отладки, когда у вас несколько подключений.

Пример:

// The default connection has `id = 0`
mongoose.connection.id; // 0

// If you create a new connection, Mongoose increments id
const conn = mongoose.createConnection();
conn.id; // 1

Connection.prototype.model()

Параметры:
  • name «String|Function» имя модели или класс, расширяющий Model
  • [schema] «Schema» схема. необходима при определении модели
  • [collection] «String» имя mongodb коллекции (необязательно) если не указано, будет выведено из имени модели
  • [options] «Object»
    • [options.overwriteModels=false] «Boolean» Если true, перезаписывает существующие модели с тем же именем, чтобы избежать OverwriteModelError
Возвращает:
  • «Model» Скомпилированная модель
См.:
  • Mongoose#model

Определяет или извлекает модель.

const mongoose = require('mongoose');
const db = mongoose.createConnection(..);
db.model('Venue', new Schema(..));
const Ticket = db.model('Ticket', new Schema(..));
const Venue = db.model('Venue');

Когда аргумент collection не передаётся, Mongoose генерирует имя коллекции, передавая модель name в метод utils.toCollectionName. Этот метод склоняет имя к множественному числу. Если вам это не нравится, либо передайте имя коллекции, либо установите параметр схемы collection name.

Пример:

const schema = new Schema({ name: String }, { collection: 'actor' });

// or

schema.set('collection', 'actor');

// or

const collectionName = 'actor'
const M = conn.model('Actor', schema, collectionName)

Connection.prototype.modelNames()

Возвращает:
  • «Array[String]»

Возвращает массив имён моделей, созданных в этом подключении.

Connection.prototype.models

Тип:
  • «свойство»

POJO, содержащий карту имён моделей к моделям. Содержит все модели, которые были добавлены в это подключение с помощью Connection#model().

Пример:

const conn = mongoose.createConnection();
const Test = conn.model('Test', mongoose.Schema({ name: String }));

Object.keys(conn.models).length; // 1
conn.models.Test === Test; // true

Connection.prototype.name

Тип:
  • «свойство»

Имя базы данных, к которой указывает это подключение.

Пример:

mongoose.createConnection('mongodb://127.0.0.1:27017/mydb').name; // "mydb"

Connection.prototype.openUri()

Параметры:
  • uri «String» URI подключения.
  • [options] «Object» Передаётся в MongoClient.connect
    • [options.bufferCommands=true] «Boolean» Специфичный для Mongoose параметр. Установите в значение false, чтобы отключить буферизацию для всех моделей, связанных с этим подключением.
    • [options.bufferTimeoutMS=10000] «Number» Специфичный для Mongoose параметр. Если bufferCommands имеет значение true, Mongoose выведет ошибку после bufferTimeoutMS, если операция всё ещё находится в буфере.
    • [options.dbName] «String» Имя базы данных, которое мы хотим использовать. Если не указано, используется имя базы данных из строки подключения.
    • [options.user] «String» Имя пользователя для аутентификации, эквивалентно options.auth.user. Сохраняется для обратной совместимости.
    • [options.pass] «String» Пароль для аутентификации, эквивалентно options.auth.password. Сохраняется для обратной совместимости.
    • [options.maxPoolSize=100] «Number» Максимальное количество сокетов, которые драйвер MongoDB будет держать открытыми для этого подключения. Имейте в виду, что MongoDB позволяет только одну операцию на сокет за раз, поэтому вы можете увеличить это значение, если у вас есть несколько медленных запросов, которые блокируют более быстрые. См. Slow Trains in MongoDB and Node.js.
    • [options.minPoolSize=0] «Number» Минимальное количество сокетов, которые драйвер MongoDB будет держать открытыми для этого подключения. Имейте в виду, что MongoDB позволяет только одну операцию на сокет за раз, поэтому вы можете увеличить это значение, если у вас есть несколько медленных запросов, которые блокируют более быстрые. См. Slow Trains in MongoDB and Node.js.
    • [options.serverSelectionTimeoutMS] «Number» Если useUnifiedTopology = true, драйвер MongoDB будет пытаться найти сервер для отправки заданной операции и продолжать попытки в течение serverSelectionTimeoutMS миллисекунд перед выводом ошибки. Если не указано, драйвер MongoDB использует значение по умолчанию 30000 (30 секунд).
    • [options.heartbeatFrequencyMS] «Number» Если useUnifiedTopology = true, драйвер MongoDB отправляет сигнал ожидания каждые heartbeatFrequencyMS для проверки состояния подключения. Сигнал ожидания подвержен serverSelectionTimeoutMS, поэтому драйвер MongoDB будет повторно пытаться выполнить неудачные сигналы ожидания до 30 секунд по умолчанию. Mongoose отправляет событие 'disconnected' только после того, как сигнал ожидания завершится неудачно, поэтому вы можете уменьшить это значение, чтобы сократить время между моментом выхода из строя сервера и отправкой события 'disconnected' в Mongoose. Рекомендуется не устанавливать это значение ниже 1000, так как слишком много сигналов ожидания может привести к ухудшению производительности.
    • [options.autoIndex=true] «Boolean» Параметр, специфичный для Mongoose. Установите в значение false, чтобы отключить автоматическое создание индексов для всех моделей, связанных с этим подключением.
    • [options.promiseLibrary] «Class» Устанавливает библиотеку обещаний для драйвера подключения.
    • [options.socketTimeoutMS=0] «Number» Время ожидания драйвера MongoDB до закрытия сокета из-за бездействия после первоначального подключения. Сокет может быть бездействующим из-за отсутствия активности или длительной операции. socketTimeoutMS по умолчанию 0, что означает, что Node.js не будет отключать сокет из-за бездействия. Этот параметр передаётся в функцию Node.js socket#setTimeout() после успешного завершения драйвером MongoDB.
    • [options.family=0] «Number» Передаётся в функцию Node.js dns.lookup(). Может быть либо 0, 4, or 6. 4means use IPv4 only,6means use IPv6 only,0` означает попробовать оба.
    • [options.autoCreate=false] «Boolean» Установите в true, чтобы Mongoose автоматически вызывал createCollection() для каждой созданной модели в этом подключении.

Открывает подключение по URI с использованием MongoClient.connect().

Connection.prototype.pass

Тип:
  • «свойство»

Пароль, указанный в URI

Пример:

mongoose.createConnection('mongodb://val:psw@127.0.0.1:27017/mydb').pass; // "psw"

Connection.prototype.plugin()

Параметры:
  • fn «Функция» обратный вызов плагина
  • [opts] «Объект» необязательные параметры
Возвращает:
  • «Connection» this
См.:
  • плагины

Объявляет плагин, выполняемый для всех схем, которые вы передаёте в conn.model()

Эквивалентно вызову .plugin(fn) для каждой создаваемой вами схемы.

Пример:

const db = mongoose.createConnection('mongodb://127.0.0.1:27017/mydb');
db.plugin(() => console.log('Applied'));
db.plugins.length; // 1

db.model('Test', new Schema({})); // Prints "Applied"

Connection.prototype.plugins

Тип:
  • «свойство»

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

Пример:

const db = mongoose.createConnection('mongodb://127.0.0.1:27017/mydb');
db.plugin(() => console.log('Applied'));
db.plugins.length; // 1

db.model('Test', new Schema({})); // Prints "Applied"

Connection.prototype.port

Тип:
  • «свойство»

Часть URI, отвечающая за порт. Если несколько хостов, например, реплицированная группа, эта часть содержит порт от первого имени хоста в URI.

Пример:

mongoose.createConnection('mongodb://127.0.0.1:27017/mydb').port; // 27017

Connection.prototype.readyState

Тип:
  • «свойство»

Состояние готовности подключения

  • 0 = отключено
  • 1 = подключено
  • 2 = подключается
  • 3 = отключается

При каждом изменении состояния генерируется соответствующее событие.

Пример:

conn.on('connected', callback);
conn.on('disconnected', callback);

Connection.prototype.removeDb()

Параметры:
  • name «String» Имя базы данных
Возвращает:
  • «Connection» this

Удаляет подключение к базе данных с заданным именем, созданное с помощью useDb().

Выбрасывает ошибку, если подключение к базе данных не найдено.

Пример:

// Connect to `initialdb` first
const conn = await mongoose.createConnection('mongodb://127.0.0.1:27017/initialdb').asPromise();

// Creates an un-cached connection to `mydb`
const db = conn.useDb('mydb');

// Closes `db`, and removes `db` from `conn.relatedDbs` and `conn.otherDbs`
await conn.removeDb('mydb');

Connection.prototype.set()

Параметры:
  • key «String»
  • val «Любой тип»

Устанавливает значение параметра key. Эквивалентно conn.options[key] = val

Поддерживаемые параметры:

  • maxTimeMS: Устанавливает maxTimeMS для всех запросов в этом подключении.
  • 'debug': Если true, выводит операции, отправляемые Mongoose в MongoDB, в консоль. Если передан поток записи, он будет записывать в этот поток без форматирования цветом. Если передан обратный вызов, он получит имя коллекции, имя метода и все аргументы, переданные методу. Например, если вы хотите воспроизвести стандартное ведение журнала, вы можете вывести данные из обратного вызова Mongoose: ${collectionName}.${methodName}(${methodArgs.join(', ')}).

Пример:

conn.set('test', 'foo');
conn.get('test'); // 'foo'
conn.options.test; // 'foo'

Connection.prototype.setClient()

Параметры:
  • client «MongClient» Клиент для установки.
Возвращает:
  • «Connection» this

Устанавливает экземпляр драйвера MongoDB MongoClient, используемый для взаимодействия с MongoDB. Это полезно, если у вас уже есть экземпляр MongoClient и вы хотите его повторно использовать.

Пример:

const client = await mongodb.MongoClient.connect('mongodb://127.0.0.1:27017/test');

const conn = mongoose.createConnection().setClient(client);

conn.getClient(); // MongoClient { ... }
conn.readyState; // 1, means 'CONNECTED'

Connection.prototype.startSession()

Параметры:
  • [options] «Объект» см. параметры драйвера mongodb
    • [options.causalConsistency=true] «Boolean» установите в значение false, чтобы отключить согласованность событий
Возвращает:
  • «Promise<ClientSession>» обещание, которое разрешается в экземпляр драйвера MongoDB ClientSession

Требуется MongoDB >= 3.6.0. Запускает сеанс MongoDB для таких преимуществ, как согласованность событий, повторные записи и транзакции.

Пример:

const session = await conn.startSession();
let doc = await Person.findOne({ name: 'Ned Stark' }, null, { session });
await doc.remove();
// `doc` will always be null, even if reading from a replica set
// secondary. Without causal consistency, it is possible to
// get a doc back from the below query if the query reads from a
// secondary that is experiencing replication lag.
doc = await Person.findOne({ name: 'Ned Stark' }, null, { session, readPreference: 'secondary' });

Connection.prototype.syncIndexes()

  • [options] «Объект»
    • [options.continueOnError] «Булево» false по умолчанию. Если установлено в true, mongoose не будет генерировать ошибку, если произошла синхронизация одного из моделей, а вернёт объект, где ключи — имена моделей, а значения — результаты/ошибки для каждой модели.
Возвращает:
  • «Promise<Объект>» Возвращает Promise, при успешном выполнении которого значением будет список удалённых индексов.

Синхронизирует все индексы для моделей, зарегистрированных с этим соединением.

Connection.prototype.transaction()

Параметры:
  • fn «Функция» Функция для выполнения в транзакции
  • [options] «[объект Объект]» Необязательные настройки для транзакции
Возвращает:
  • «Promise<Любое>» промис, который выполняется успешно, если Mongoose успешно подтвердил транзакцию, или отклоняется, если транзакция была прервана или Mongoose не смог подтвердить транзакцию. При успешном выполнении промис разрешается до результата команды MongoDB.

Требуется MongoDB >= 3.6.0. Выполняет обернутую асинхронную функцию в транзакции. Mongoose подтвердит транзакцию, если асинхронная функция выполнится успешно, и попытается повторить попытку, если произошла ошибка, допускающая повторную попытку.

Вызывает метод драйвера MongoDB session.withTransaction(), но также обрабатывает сброс состояния документов Mongoose, как показано ниже.

Пример:

const doc = new Person({ name: 'Will Riker' });
await db.transaction(async function setRank(session) {
  doc.rank = 'Captain';
  await doc.save({ session });
  doc.isNew; // false

  // Throw an error to abort the transaction
  throw new Error('Oops!');
},{ readPreference: 'primary' }).catch(() => {});

// true, `transaction()` reset the document's state because the
// transaction was aborted.
doc.isNew;

Connection.prototype.useDb()

Параметры:
  • name «Строка» Имя базы данных
  • [options] «Объект»
    • [options.useCache=false] «Булево» Если true, кеширует результаты, так что вызов useDb() с тем же именем несколько раз создаёт только 1 объект соединения.
    • [options.noListener=false] «Булево» Если true, объект соединения не будет подключаться к событиям базы данных в исходном соединении. См. проблему #9961.
Возвращает:
  • «Connection» Новый объект Connection

Переключается на другую базу данных, используя тот же пул соединений.

Возвращает новый объект соединения с новой базой данных.

Пример:

// Connect to `initialdb` first
const conn = await mongoose.createConnection('mongodb://127.0.0.1:27017/initialdb').asPromise();

// Creates an un-cached connection to `mydb`
const db = conn.useDb('mydb');
// Creates a cached connection to `mydb2`. All calls to `conn.useDb('mydb2', { useCache: true })` will return the same
// connection instance as opposed to creating a new connection instance
const db2 = conn.useDb('mydb2', { useCache: true });

Connection.prototype.user

Тип:
  • «свойство»

Имя пользователя, указанное в URI

Пример:

mongoose.createConnection('mongodb://val:psw@127.0.0.1:27017/mydb').user; // "val"

Connection.prototype.watch()

Параметры:
  • [pipeline] «Массив»
  • [options] «Объект» передаётся без изменений в метод драйвера MongoDB Db#watch()
Возвращает:
  • «ChangeStream» Обёртка change stream, специфичная для mongoose, наследуется от EventEmitter

Отслеживает всю базу данных на предмет изменений. Аналогично Model.watch().

Этот метод не запускает никакие middleware. В частности, он не запускает агрегатные middleware.

Объект ChangeStream является эмиттером событий, который излучает следующие события:

  • 'change': Произошло изменение, см. пример ниже
  • 'error': Произошла неисправимая ошибка. В частности, потоки изменений в настоящее время выдают ошибку, если они теряют соединение с первичным узлом репликации. Следите за этой проблемой GitHub для получения обновлений.
  • 'end': Излучается, если базовый поток закрыт
  • 'close': Излучается, если базовый поток закрыт

Пример:

const User = conn.model('User', new Schema({ name: String }));

const changeStream = conn.watch().on('change', data => console.log(data));

// Triggers a 'change' event on the change stream.
await User.create({ name: 'test' });

© 2010 LearnBoost
Licensed under the MIT License.
https://mongoosejs.com/docs/api/connection.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API