Официальный сайт 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);
})