Как Запрашивать Документы В MongoDB С Помощью NodeJS?
MongoDB - популярная база данных NoSQL, которая обеспечивает гибкое и масштабируемое хранение данных. NodeJS и JavaScript runtime созданы на основе JavaScript-движка Chrome версии 8. Он часто используется вместе с MongoDB для создания мощных и эффективных приложений. В этой статье мы расскажем вам, как запрашивать документы в MongoDB с помощью Node.js. Мы рассмотрим различные подходы и дадим пошаговые инструкции по настройке приложения.
Предпосылки
- NodeJS
- MongoDB
- NodeJS и MongoDB установлены в вашей локальной системе.
Подход 1. Использование обратных вызовов
Обратные вызовы - это традиционный метод обработки асинхронных операций в NodeJS. Функция обратного вызова может быть передана в качестве аргумента другой функции и выполняется после завершения выполнения первой функции.
Синтаксис
const MongoClient = require('mongodb').MongoClient; const URL = 'mongodb://localhost:27017'; const dbName = 'mydatabase'; MongoClient.connect(url, function (err, client) { if (err) throw err; // Обработка ошибок соединения const db = client.db(dbName); db.collection('mycollection').find({}). toArray(function (err, result) { if (err) throw err; // Обрабатываем ошибки запроса console.log(result); // Распечатываем результаты client.close(); // Закрываем соединение } );
Объяснение
- MongoClient.connect() : эта функция может подключаться к серверу MongoDB. Если соединение установлено успешно, клиентский объект передается функции обратного вызова.
- client.db(dbName) : он может установить выбор базы данных.
- db.collection('mycollection').find({}).toArray(function(err, result) : он может запрашивать коллекцию и преобразовывать результат в массив, передавая его в функцию обратного вызова.
- client.close : Закрыть соединение с базой данных.
Подход 2: Использование Promises
Promises могут обеспечить более гибкий способ обработки асинхронных операций. Это может обеспечить лучшую читаемость и обработку ошибок. Они являются цепочечными и упрощают управление несколькими асинхронными операциями.
Синтаксис
const MongoClient = require('mongodb').MongoClient; const URL = 'mongodb://localhost:27017'; const dbName = 'mydatabase'; MongoClient.connect(url) .then(client => { const db = client.db(dbName); return db.collection('mycollection').find({}).toArray(); }) .then(result = > { console.log(result); // Распечатываем результаты }) .catch(err => { console.error(err); // Обрабатываем ошибки });
Объяснение:
- MongoClient.connect(url) : подключается к серверу MongoDB и возвращает обещание.
- .then(client => {…}) ; Он может выполняться после успешного соединения и передачи клиентского объекта следующей функции.
- db.collection('mycollection').find({}).toArray() : он может запрашивать коллекцию и возвращать обещание, которое разрешается с помощью массива результатов.
- .then(result => {…}) : он может выполняться после успешного выполнения запроса, а затем передавать массив следующей функции.
- console.log(result) : выводит результат на консоль.
Подход 3. Использование Async/Await
Async/Await - это современный подход к обработке асинхронных операций в JavaScript, представленный в ES8. Он позволяет писать асинхронный код в синхронном стиле. что делает его более читаемым и простым в отладке.
Синтаксис
const { MongoClient } = require('mongodb'); const url = 'mongodb://localhost:27017'; const dbName = 'mydatabase'; async function queryDatabase() { const client = new MongoClient(url); try { await client.connect(); // Connect to the MongoDB server const db = client.db(dbName); const result = await db.collection('mycollection').find({}).toArray(); // Query the collection console.log(result); // Print the results } catch (err) { console.error(err); // Handle errors } finally { await client.close(); // Close the connection } } queryDatabase();
Объяснение
- async function queryDatabase() {…} : она может определять асинхронную функцию.
- const client = new MongoClient(url) : Создаёт новый экземпляр MongoClient.
- await client.connect() : подключается к серверу MongoDB. Ключевое слово await может приостановить выполнение до тех пор, пока соединение не будет завершено.
- const result = await db.collection('mycollection').find({}).toArray() : он может запрашивать коллекцию и преобразовывать результат в массив.
- finally { await client.close() } : он может гарантировать закрытие соединения с базой данных независимо от того, произошла ли ошибка.
Шаги Для Запроса Документов В MongoDB
Шаг 1. Инициализируйте новый проект Node.js, используя следующую команду.
npm init -y
Инициализируйте проект
Шаг 2. Установите необходимый модуль MongoDB.
npm i mongodb
Структура папок
"dependencies": { "mongodb": "^6.8.0" }
Пример: Запрос документов с использованием асинхронного ожидания.
JavaScript //index.js const { MongoClient } = require('mongodb'); const url = 'mongodb://localhost:27017'; const dbName = 'oauth-server'; async function queryDatabase() { const client = new MongoClient(url); try { await client.connect(); const db = client.db(dbName); const result = await db.collection('clients').find({}).toArray(); console.log(result); } catch (err) { console.error(err); } finally { await client.close(); } } queryDatabase();
Запустите приложение, используя следующую команду.
node index.js
Вывод
Этот пример проекта может продемонстрировать, как запрашивать документы в MongoDB с помощью проекта Node.js.