Node.js и mongodb

Node.js и mongodb

Официальный сайт mongodb: https://www.mongodb.com

Для бесплатного хостинга баз mongodb – можно использовать их же облачное хранилищеhttps://www.mongodb.com/cloud

Будем использовать библиотеку: https://www.npmjs.com/package/mongodb

Устанавливаем mongodb драйвер в node.js

npm install mongodb --save

Клиенты для удобной визуальной работы с базой данных mongo

Для удобной работой с базой данных, можно использовать studio3t: https://studio3t.com

Или бесплатный клиент: Robo 3T: https://robomongo.org

Пример использования mongodb в Node.js

Структура проекта:

models
  db.js
index.js

Файл db.js:

const MongoClient = require('mongodb').MongoClient;
const ObjectID = require('mongodb').ObjectID;
const url = "Строка подключения к базе, я использую облачную";

const baza = 'test1';

module.exports.add = function(tabl, data) {
  return new Promise((resolve, reject) => {
    MongoClient
      .connect(url, function(err, client) {
        if (err) {
          reject(err);
        }
        client
          .db(baza)
          .collection(tabl)
          .insertOne(data, function(err, results){
             if (err) {
               reject(err);
             }
             client.close();
             resolve(results.ops[0]);
        })
    });         
  })
}

module.exports.getZadacaId = function(chatId, zadacaId) {
  return new Promise((resolve, reject) => {
    const id = new ObjectID(zadacaId);
    MongoClient
      .connect(url, function(err, client) {
        if (err) {
          reject(err);
        }
        client
          .db(baza)
          .collection('zadaci')
          .find({ "chatId": chatId, _id: id })
          .toArray(function(err, results){
            if (err) {
              reject(err);
            }
            client.close();
            resolve(results);
          })
    });         
  })
}

module.exports.updateZadaca = function(chatId, zadacaId, data) {
  return new Promise((resolve, reject) => {
    const id = new ObjectID(zadacaId);
    MongoClient
      .connect(url, function(err, client) {
        if (err) {
          reject(err);
        }
        client
          .db(baza)
          .collection('zadaci')
          .findOneAndUpdate(
            { "chatId": chatId, _id: id },
            { $set: data},
            {returnOriginal: false},
            function(err,results){
              if (err) {
                reject(err);
              }
              client.close();
              resolve(results.value);                            
            })
   });         
 })
}

module.exports.deleteZadaca = function(chatId, nmsg) {
  return new Promise((resolve, reject) => {
    MongoClient
      .connect(url, function(err, client) {
        if (err) {
          reject(err);
        }
        client
          .db(baza)
          .collection('zadaci')
          .deleteOne({ "chatId": chatId, "nmsg": nmsg },
            function(err, results){
              if (err) {
                reject(err);
              }
              client.close();
              resolve(results);
            })
            
   });         
 })
}

module.exports.deleteZadacaId = function(chatId, zadacaId) {
  return new Promise((resolve, reject) => {
    const id = new ObjectID(zadacaId);
    MongoClient
      .connect(url, function(err, client) {
        if (err) {
          reject(err);
        }
        client
          .db(baza)
          .collection('zadaci')
          .deleteOne({ "chatId": chatId, "_id": id },
            function(err, results){
              if (err) {
                reject(err);
              }
              client.close();
              resolve(results);
           })           
    });         
  })
}

module.exports.getZadaci = function(chatId) {
  return new Promise((resolve, reject) => {
    MongoClient
      .connect(url, function(err, client) {
         if (err) {
           reject(err);
         }
         client
           .db(baza)
           .collection('zadaci')
           .find({ "chatId": chatId, "vipolnena": { $ne: true } })
           .sort({ data : 1 })
           .toArray(function(err, results){
             if (err) {
               reject(err);
             }
             client.close();
             resolve(results);
           })
    });         
  })
}

Файл db.js – состоит из экспортных функций, которые возвращают промисы. Эти промисы соединяются с базой данный выполняют запрос, и при помощи “toArray” – преобразуют ответ от базы в массив, его и возвращают.

Ну и соответственно несколько разных примеров запросов описано.

Файл index.js и пример вызова промиса:

const db = require('./models/db');  

const chatId = "Значение переменной";

db
  .getZadaci(chatId)
  .then((results)=>{
    results.forEach(element => {
        console.log(element);
    })
  })
  .catch((err)=>{
    console.log(err);
  })

Оставить комментарий