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

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

Войти через центр авторизации
Похожие вопросы
28 мар. 2024, в 18:16
1000 руб./за проект
28 мар. 2024, в 18:15
90000 руб./за проект
28 мар. 2024, в 18:05
5000 руб./за проект