@Artur937
junior

Как оптимизировать несколько post запросов к базе данных на одной странице?

При клике на кнопку отправляется POST запрос на сервер, подгружается список. Переменная rasdel генерируется на основе id кнопки, на которую кликнул пользователь(первый раз пишу подобный скрипт,
то что беру id - это правильно? затем обрабатываю на сервере)

var rasdel = '';					//   разделы

		function chart_ajax_add(rasdel ){
			$.ajax({  //на раздела выдаем список
			type: "POST",
			url: "/mar",
			data: rasdel ,
			contentType: "text/plain",
			success:function (text) {
				for(i = 0; i < text.length; i++){
					$('.razdel').find('ul').append('<li attr="'+   (i+1) + '">' + (i+1) + '. ' + text[i]['name'] +'</li>');
				}}				
		}).fail(function () {
			console.log('fail');
		});
	};


На сервере происходит вот что:

app.post('/mar', (req, res) => {      
    var requ = JSON.parse(req.body);
    const db = mysql.createConnection({
        host:  'localhost',
        user: 'root',
        password: '',
        database: requ.rasdel 
        });
    let sql = 'SELECT * FROM subcharter WHERE `rasdel _id` =' + requ.rasdel ;
    db.query(sql, (err, result) =>{
        if (err) throw err;
        let mas = JSON.stringify(result);
        // console.log(mas);   
        res.type('application/json');  
        res.send(mas);      
        });
    db.end();    
});


В дальнейшем при клике на элементах во вновь созданном списке создается еще один подобный список (уже из подразделов выбранного раздела). Как это реализовать? Получается что надо передавать две переменных на сервер: 1 - база данных, 2 - выбранный раздел? (Для каждого раздела база данных своя)
  • Вопрос задан
  • 90 просмотров
Пригласить эксперта
Ответы на вопрос 1
@RidgeA
1. Не надо каждый раз создавать соединение к БД. Надо это сделать 1 раз при запуске приложения. Или пул соединений.
2. Не надо так делать запросы в базу - надо через подготовленные запросы.
3. В рамках соединения к одному серверу можно делать запросы к разным базам данных, надо только их явно указывать в запросе
select * from `database`.`table`
4. Запросы можно кешировать
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через TM ID
Похожие вопросы
OneTwoTrip! Москва
от 120 000 до 200 000 руб.
1Win Санкт-Петербург
от 80 000 до 200 000 руб.
от 70 000 до 110 000 руб.
19 авг. 2018, в 18:43
2000 руб./за проект
19 авг. 2018, в 17:11
200000 руб./за проект
19 авг. 2018, в 12:12
40000 руб./в месяц