Рубрики
Без рубрики

Как использовать MongoDB с Node.js

В этом уроке я покажу вам, как взаимодействовать с базой данных MongoDB из Node.js

Если вы не знакомы с MongoDB, ознакомьтесь с нашим руководством по его основам и о том, как его установить и использовать:)

Мы будем использовать официальный mongodb нпм пакет. Если у вас уже есть Node.js проект, над которым вы работаете, установите его с помощью

npm install mongodb

Если вы начинаете с нуля, создайте новую папку с вашим терминалом и запустите npm init -y для запуска нового Node.js проект, а затем запустите команду npm install mongodb .

Подключение к MongoDB

Вам требуется пакет mongodb , и вы получаете из него объект MongoClient.

const mongo = require('mongodb').MongoClient

Создайте URL-адрес сервера MongoDB. Если вы используете MongoDB локально, URL-адрес будет примерно таким mongodb://localhost:27017 , как 27017 является портом по умолчанию.

const url = 'mongodb://localhost:27017'

Затем используйте метод mongo.connect() , чтобы получить ссылку на клиент экземпляра MongoDB:

mongo.connect(url, {
    useNewUrlParser: true,
    useUnifiedTopology: true
  }, (err, client) => {
  if (err) {
    console.error(err)
    return
  }
  //...
})

Теперь вы можете выбрать базу данных с помощью метода client.db() :

const db = client.db('kennel')

Создайте и получите коллекцию

Вы можете получить коллекцию с помощью метода db.collection() . Если коллекция еще не существует, она будет создана.

const collection = db.collection('dogs')

Вставка данных в коллекцию Документ

Добавить к app.js следующая функция, которая использует метод insert One() для добавления коллекции объектов собак .

collection.insertOne({name: 'Roger'}, (err, result) => {

})

Вы можете добавить несколько элементов с помощью вставить много() , передав массив в качестве первого параметра:

collection.insertMany([{name: 'Togo'}, {name: 'Syd'}], (err, result) => {

})

Найти все документы

Используйте метод find() для коллекции, чтобы получить все документы, добавленные в коллекцию:

collection.find().toArray((err, items) => {
  console.log(items)
})

Найдите конкретный документ

Передайте объект методу find() для фильтрации коллекции на основе того, что вам нужно получить:

collection.find({name: 'Togo'}).toArray((err, items) => {
  console.log(items)
})

Если вы знаете, что получите один элемент, вы можете пропустить преобразование toArray() курсора, вызвав findOne() :

collection.findOne({name: 'Togo'}, (err, item) => {
  console.log(item)
})

Обновить существующий документ

Используйте метод update One() для обновления документа:

collection.updateOne({name: 'Togo'}, {'$set': {'name': 'Togo2'}}, (err, item) => {
  console.log(item)
})

Удалить документ

Используйте метод удалить один() для удаления документа:

collection.deleteOne({name: 'Togo'}, (err, item) => {
  console.log(item)
})

Закрытие соединения

Как только вы закончите с операциями, вы можете вызвать закрыть( ) метод на объекте клиента:

client.close()

Используйте обещания или асинхронность/ожидание

Я опубликовал все эти примеры, используя синтаксис обратного вызова. Этот API также поддерживает обещания (и асинхронность/ожидание).

Например этот

collection.findOne({name: 'Togo'}, (err, item) => {
  console.log(item)
})

Может использоваться с обещаниями:

collection.findOne({name: 'Togo'})
  .then(item => {
    console.log(item)
  })
  .catch(err => {
  console.error(err)
  })

или асинхронный/ожидающий:

const find = async () => {
  try {
    const item = await collection.findOne({name: 'Togo'})
  } catch(err => {
  console.error(err)
  })
}

find()

Оригинал: “https://flaviocopes.com/node-mongodb/”