Подключение
Connection()
Параметры:
-
base«Mongoose» экземпляр mongoose
Наследуется от:
Конструктор подключения
По практическим соображениям, подключение равно 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» Скомпилированная модель
См.:
Определяет или извлекает модель.
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.jssocket#setTimeout()после успешного завершения драйвером MongoDB. -
[options.family=0]«Number» Передаётся в функцию Node.jsdns.lookup(). Может быть либо0,4, or6.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]«Объект» передаётся без изменений в метод драйвера MongoDBDb#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