Javascript-форум (https://javascript.ru/forum/)
-   Node.JS (https://javascript.ru/forum/node-js-io-js/)
-   -   Класс работы С базой данных. (https://javascript.ru/forum/node-js-io-js/76257-klass-raboty-s-bazojj-dannykh.html)

mcBiba 18.12.2018 17:19

Класс работы С базой данных.
 
Я пишу класс для работы с базой данных. БД MYSQL. Все работает, но только проблема с подключением. С каждым вызовом SELECT или другим действием с базой создается новое подключение и все быстро падает из за большого количества подключений. Пробовал объявить переменную connection глобально, но ничего не выходит.



let express = require("express");
let app = express();
let mysql = require('async-mysql');


app.get('/', function (req, res) {
  new DB('id','users','email','biba@yandex.ru',null).select().then(rows=>console.log(rows));
});

class DB {
  constructor(column,table,indefName,indef,data,query) {
    if(data!=null){
      if(typeof data !="string"){
        for(var i=0;i<data.length;i++){
          data[i] = "'"+data[i]+"'";
        }
      }
      else{
        data = "'"+data+"'";
      }
    }
    this.column = column;
    this.table = table;
    this.indef = "'"+indef+"'";
    this.indefName = indefName;
    this.data = data;
    this.query = query;
  };
  async select() {
    let connection = await mysql.connect({
      host     : '127.0.0.1',
      port     : '3306',
      database : 'heano',
      user     : 'root',
      password : '1234',
      charset  : 'utf8'
    });
    let rows = await connection.query("SELECT "+this.column+" FROM "+this.table+" WHERE "+this.indefName+"="+this.indef);
    return rows;
  };
};


let server = app.listen(2800, () => console.log("Работа пошла"));

SuperZen 18.12.2018 22:20

https://nestjs.com/
http://typeorm.io/
https://github.com/nestjs/graphql
https://graphql.org/learn/
) а это...

Nexus 19.12.2018 09:44

SuperZen, на каждый тип запроса по классу)

SuperZen 19.12.2018 13:57

Nexus, https://graphql.org/learn/queries/#fragments, https://graphql.org/learn/queries/#inline-fragments , но в целом, программа имеет какие-то границы, и поэтому все запросы должны быть известны... ))

mcBiba 19.12.2018 16:23

SuperZen,
В очередной раз спасибо) Выбрал sequelize.


Часовой пояс GMT +3, время: 23:55.