D
D
Dvorak2016-06-25 15:34:05
MongoDB
Dvorak, 2016-06-25 15:34:05

Am I working with MongoDB correctly?

Wrote some simple functions for writing and changing files in the database. Here is an example of one of them:

let  mongodb = require('mongodb'),
      MongoClient = mongodb.MongoClient,
      url = 'mongodb://localhost:27017/PlantsBot',

function addNewUser(MongoClient, collection, url, user) {
  MongoClient.connect(url, function(err, db) {
    if (err) throw err;
    let users = db.collection(collection);
    users.insert(user, function(err, docs) {
      if (err) throw err;
      console.log('Пользователь успешно добавлен');
      db.close();
    });
  });
};

The rest of the functions are similar. I again call the connect() method on the MongoClient object, and at the very end I call db.close(). Only instead of insert() I call find() or remove().
Is it normal for me to constantly open and close a connection on MongoClient? Doesn't this hurt performance?

Answer the question

In order to leave comments, you need to log in

4 answer(s)
Евгений, 2016-06-25
@Nc_Soft

Мне надо принести в дом 3 пакета с едой из магазина. Я выхожу, закрываю дверь, иду в магазин, покупаю пакет, несу домой, открываю дверь, заношу пакет и закрываю дверь. Потом повторяю это два раза.
Сразу принести пакеты мне религия не позволяет, ведь я с монго работаю.

L
lega, 2016-06-25
@lega

Не бьёт ли это по производительности?

Бьёт

Олег, 2016-06-25
@werty1001

Думаю как-то так:

var mongodb = require('mongodb'),
  MongoClient = mongodb.MongoClient,
  db;

  MongoClient.connect('mongodb://localhost:27017/PlantsBot', function(err, database) {
    if(err) throw err;

    db = database;

    // Стартуем если база загрузилась

  });

  db.collection('mycollection').find({}, function(err, docs) {
    ...
  });

Владимир Грабко, 2016-06-25
@VGrabko

а вы не подскажите хотя бы примерно, как мне реализовать отдельные функции удаления и записи так, чтобы не подключаться к базе по много раз?

Паттерн «Репозиторий»

Didn't find what you were looking for?

Ask your question

Ask a Question

731 491 924 answers to any question