 
			
				16.10.2020, 13:38
			
			
			
		  
	 | 
 
	
		
		
		
			  | 
			
			
				
				
				 Профессор 
				
				
				
				
	
 
 
 
			 | 
			  | 
			
				
				
					Регистрация: 08.11.2017 
					
					
					
						Сообщений: 641
					 
					
					
			
		
 
		 
		
			 | 
		 
		 
		
	 | 
 
	| 
	
	
		
		
		
		
		 к сожалению, все что выложили, это мертвый код ), и смысла его подгонять "чтобы заработало" нет, лучше сформулируйте: есть табличка(и) такие-то в них лежит то-то, делаю запрос такой-то, и хочу получить то-то... 
		
	
		
		
		
		
		
		
	
		
		
	
	
	 | 
 
 
	 
		 | 
 
 
	
	
	
		
	
		
		
		
			
			 
			
				16.10.2020, 16:43
			
			
			
		  
	 | 
 
	
		
		
		
			  | 
			
			
				
				
				 Профессор 
				
				
				
				
	
 
 
 
			 | 
			  | 
			
				
				
					Регистрация: 03.02.2020 
					
					
					
						Сообщений: 2,777
					 
					
					
			
		
 
		 
		
			 | 
		 
		 
		
	 | 
 
	
	
	
		
		
		
		
		
	
 
	| 
		
			Сообщение от riaron
			
		
	 | 
 
	| 
		как передать переменную length и массив orderids в последний then
	 | 
 
	
 
 В каком коде? 
Сначала у вас был один код. Я показал, как выполнять его с Promise.  3 запроса. Третий (sql1) должен выполняться после первых двух. Ничего передавать не надо было. length (start и end) считались в первом, orderids во втором, и к третьему запросу все должно быть уже  вычbсленно. 
Потом вы переделали код. Уже цикл с запросами...  
Я этот код не совсем понимаю. 
Он в принципе неверен.  
		
	
		
		
		
		
		
		
	
		
		
	
	
	 | 
 
 
	 
		 | 
 
 
	
	
	
		
	
		
		
		
			
			 
			
				16.10.2020, 16:44
			
			
			
		  
	 | 
 
	
		
		
		
			
			| 
			
				
				
				 Аспирант 
				
				
				
				
	
 
 
 
			 | 
			  | 
			
				
				
					Регистрация: 16.08.2020 
					
					
					
						Сообщений: 53
					 
					
					
			
		
 
		 
		
			 | 
		 
		 
		
	 | 
 
	| 
	
	
		
		
		
		
		 Как сжелать чтобы sql запрос выполнялся в цикле? 
		
	
		
		
		
		
		
		
	
		
		
	
	
	 | 
 
 
	 
		 | 
 
 
	
	
	
		
	
		
		
		
			
			 
			
				16.10.2020, 16:50
			
			
			
		  
	 | 
 
	
		
		
		
			  | 
			
			
				
				
				 Профессор 
				
				
				
				
	
 
 
 
			 | 
			  | 
			
				
				
					Регистрация: 03.02.2020 
					
					
					
						Сообщений: 2,777
					 
					
					
			
		
 
		 
		
			 | 
		 
		 
		
	 | 
 
	
	
	
		
		
		
		
		
	
 
	| 
		
			Сообщение от riaron
			
		
	 | 
 
	| 
		Как сжелать чтобы sql запрос выполнялся в цикле?
	 | 
 
	
 
 Это зависит от запросов и того, как обрабатывается результат. 
Если запросы и их обработка полностью независимы друг от друга, то их можно выполнять параллельно, а потом просто ждать, когда они завершатся. (использовать Promise.all) 
Если каждый следующий должен ждать завершения предыдущего, то надо делать цепочку обещаний и обработок.  
		
	
		
		
		
		
		
		
	
		
		
	
	
	 | 
 
 
	 
		 | 
 
 
	
	
	
		
	
		
		
		
			
			 
			
				16.10.2020, 17:35
			
			
			
		  
	 | 
 
	
		
		
		
			
			| 
			
				
				
				 Аспирант 
				
				
				
				
	
 
 
 
			 | 
			  | 
			
				
				
					Регистрация: 16.08.2020 
					
					
					
						Сообщений: 53
					 
					
					
			
		
 
		 
		
			 | 
		 
		 
		
	 | 
 
	
	
	
		
		
		
		
		хочу чтобы  
сначала 	var sql3='SELECT `id` FROM `orders`'; по промису 
потом 
	var sql2='SELECT `orderid` FROM `orders` GROUP BY  `orderid` limit start,end'; 
в третьем промисе  уже бес последующих промисов 
	var sql1 ='SELECT `id`,`prod`,`name`,`photo`,`price`,`sale`,`remote_  adr`,`quantity` FROM `orders` where orderid=?'; в цикле 
не могу сделать так чтобы length и orderids передались в последний then
 
app.get('/orders/:page', (req, res) => {
    var connection = getMySQLConnection();
    var smartphone=[];
    var allsmartphone={};
    var smartphoneList=[];
    var allprice=0;
    var a;
    var b;
    var length;
	var orderids;
	var start;
	var end;
	var allprice;
	start=(req.params.page-1)*10;
	end=req.params.page*10;
	var sql3='SELECT `id` FROM `orders`';
	var sql2='SELECT `orderid` FROM `orders` GROUP BY  `orderid`';
	var sql1 ='SELECT `id`,`prod`,`name`,`photo`,`price`,`sale`,`remote_adr`,`quantity` FROM `orders` WHERE orderid=?';
	function pquery (con, sql, par) {
		return new Promise ( (res, rej) => {
			con.query (sql, par,  (err, result) => {
					if (err) {
						rej (err);
					} else {
						res (result);
					}
	
			});
	
		});
	}
	Promise.all([
		pquery (connection, sql3, []).then( resulta => {
			length=resulta.length;
			if(start<0){start=0;}
			if(end>(length-req.params.page*10)%10){end=length;}
		}),
		pquery (connection, sql2, []).then( result => {
			orderids=result;
		})
	]).then ( () => {
			
	for(var j=0;j<orderids.length;j++) {
		connection.connect(function(err) {
			connection.query(sql, [orderids[j]], function (err, result) {
				for (var i = 0; i < results.length; i++) {
					// Create the object to save the data.
					b = results[i].price - results[i].price * results[i].sale / 100;
					a = b * results[i].quantity;
					allprice += a;
					var smart = {
						'id': results[i].id,
						'prod': results[i].prod,
						'name': results[i].name,
						'photo': results[i].photo,
						'sale': results[i].sale,
						'price': results[i].price,
						'tsale': b,
						'vsego': a,
						'quantity': results[i].quantity,
						'allprice': allprice,
					};
					smartphone.push(smart);
				}
			});
			allsmartphone.push= smartphone;
		});
	});
					console.log(orderids);
			res.render('orders', {"smartphoneList": smartphoneList,"allsmartphone": allsmartphone,'orderids':orderids});*/
		});
});
 
		
	
		
		
		
		
		
		
		
						  
				
				Последний раз редактировалось riaron, 17.10.2020 в 17:24.
				
				
			
		
		
	
		
		
	
	
	 | 
 
 
	 
		 | 
 
 
	
	
	
		
	
		
		
		
			
			 
			
				18.10.2020, 21:23
			
			
			
		  
	 | 
 
	
		
		
		
			
			| 
			
				
				
				 Аспирант 
				
				
				
				
	
 
 
 
			 | 
			  | 
			
				
				
					Регистрация: 16.08.2020 
					
					
					
						Сообщений: 53
					 
					
					
			
		
 
		 
		
			 | 
		 
		 
		
	 | 
 
	
	
	
		
		
		
		
		\app.js:159 
                 bb[1]=resulta; 
                 ^^
 
SyntaxError: Unexpected identifier 
←[90m    at wrapSafe (internal/modules/cjs/loader.js:1053:16)←[39m 
←[90m    at Module._compile (internal/modules/cjs/loader.js:1101:27)←[39m 
←[90m    at Object.Module._extensions..js (internal/modules/cjs/loader.js:1157:10)←[39m 
←[90m    at Module.load (internal/modules/cjs/loader.js:985:32)←[39m 
←[90m    at Function.Module._load (internal/modules/cjs/loader.js:878:14)←[39m 
←[90m    at Function.executeUserEntryPoint [as runMain] (internal/modules/run_main.js:71:12)←[39m 
←[90m    at internal/main/run_main_module.js:17:47←[39m
 
C:\xampp\htdocs\mysite.local>node app 
C:\xampp\htdocs\mysite.local\app.js:159 
                 bb[1]=resulta; 
                 ^^
 
SyntaxError: Unexpected identifier 
←[90m    at wrapSafe (internal/modules/cjs/loader.js:1053:16)←[39m 
←[90m    at Module._compile (internal/modules/cjs/loader.js:1101:27)←[39m 
←[90m    at Object.Module._extensions..js (internal/modules/cjs/loader.js:1157:10)←[39m 
←[90m    at Module.load (internal/modules/cjs/loader.js:985:32)←[39m 
←[90m    at Function.Module._load (internal/modules/cjs/loader.js:878:14)←[39m 
←[90m    at Function.executeUserEntryPoint [as runMain] (internal/modules/run_main.js:71:12)←[39m 
←[90m    at internal/main/run_main_module.js:17:47←[39m
 
app.get('/orders/:page', (req, res) => {
    var connection = getMySQLConnection();
    var smartphone=[];
    var allsmartphone={};
    var smartphoneList=[];
    var allprice=0;
    var a;
    var b;
    var length;
	var orderids;
	var start;
	var end;
	var allprice;
	var bb=[];
	start=(req.params.page-1)*10;
	end=req.params.page*10;
	var sql3='SELECT `id` FROM `orders`';
	var sql2='SELECT `orderid` FROM `orders` GROUP BY  `orderid`';
	var sql1 ='SELECT `id`,`prod`,`name`,`photo`,`price`,`sale`,`remote_adr`,`quantity` FROM `orders` WHERE orderid=?';
	function pquery (con, sql, par) {
		return new Promise ( (res, rej) => {
			con.query (sql, par,  (err, result) => {
					if (err) {
						rej (err);
					} else {
						res (result);
					}
	
			});
	
		});
	}
	Promise.all([
		pquery (connection, sql3, []).then( resulta => {
			length=resulta.length;
			if(start<0){start=0;}
			if(end>(length-req.params.page*10)%10){end=length;}
		}),
		pquery (connection, sql2, []).then( result => {
			orderids=result;
		})
		 bb[1]=resulta;
		 bb[2]=result;
	]).then ( (bb) => {
			
	/*for(var j=0;j<orderids.length;j++) {
		connection.connect(function(err) {
			connection.query(sql, [orderids[j]], function (err, result) {
				for (var i = 0; i < results.length; i++) {
					// Create the object to save the data.
					b = results[i].price - results[i].price * results[i].sale / 100;
					a = b * results[i].quantity;
					allprice += a;
					var smart = {
						'id': results[i].id,
						'prod': results[i].prod,
						'name': results[i].name,
						'photo': results[i].photo,
						'sale': results[i].sale,
						'price': results[i].price,
						'tsale': b,
						'vsego': a,
						'quantity': results[i].quantity,
						'allprice': allprice,
					};
					smartphone.push(smart);
				}
			});
			allsmartphone.push= smartphone;
		});
	});*/
					console.log("len: " + bb[1]+" orderids: "+bb[2]);
			//res.render('orders', {"smartphoneList": smartphoneList,"allsmartphone": allsmartphone,'orderids':orderids});*/
		});
});
 не передается bb  
		
	
		
		
		
		
		
		
	
		
			
			
	
			
			
			
			
			
				 
			
			
			
			
			
			
				
			
			
			
		 
		
	
	
	 | 
 
 
	 
		 | 
 
 
	
	
	
		
	
		
		
		
			
			 
			
				18.10.2020, 23:29
			
			
			
		  
	 | 
 
	
		
		
		
			  | 
			
			
				
				
				 Профессор 
				
				
				
				
	
 
 
 
			 | 
			  | 
			
				
				
					Регистрация: 03.02.2020 
					
					
					
						Сообщений: 2,777
					 
					
					
			
		
 
		 
		
			 | 
		 
		 
		
	 | 
 
	
	
	
		
		
		
		
		
Promise.all([
        pquery (connection, sql3, []).then( resulta => {
            length=resulta.length;
            if(start<0){start=0;}
            if(end>(length-req.params.page*10)%10){end=length;}
        }),
        pquery (connection, sql2, []).then( result => {
            orderids=result;
        })
         bb[1]=resulta;
         bb[2]=result;
    ])
Ну что за ерунда. 
Promise.all
 https://developer.mozilla.org/ru/doc...ts/Promise/all
Параметром функции должен быть МАССИВ Promise. 
А это что такое? 
        bb[1]=resulta; 
         bb[2]=result;
 
 
var bb=[]; 
.....
 
.then ( (bb) => {
 
Это совсем разные bb 
Первая - просто переменная 
Вторая -  параметр функции в then  
		
	
		
		
		
		
		
		
	
		
		
	
	
	 | 
 
 
	 
		 | 
 
 
	
	
	
		
	
		
		
		
			
			 
			
				18.10.2020, 23:36
			
			
			
		  
	 | 
 
	
		
		
		
			  | 
			
			
				
				
				 Профессор 
				
				
				
				
	
 
 
 
			 | 
			  | 
			
				
				
					Регистрация: 03.02.2020 
					
					
					
						Сообщений: 2,777
					 
					
					
			
		
 
		 
		
			 | 
		 
		 
		
	 | 
 
	
	
	
		
		
		
		
		
	
 
	| 
		
			Сообщение от riaron
			
		
	 | 
 
	| 
		не могу сделать так чтобы length и orderids передались в последний then
	 | 
 
	
 
 А их и не надо передавать в then. 
Они глобальные (внешние) в then они и так доступны. 
Главное, что бы были к этому времени посчитаны.  
		
	
		
		
		
		
		
		
	
		
		
	
	
	 | 
 
 
	 
		 | 
 
 
	
	
	
		
	
		
		
		
			
			 
			
				19.10.2020, 09:25
			
			
			
		  
	 | 
 
	
		
		
		
			  | 
			
			
				
				
				 Профессор 
				
				
				
				
	
 
 
 
			 | 
			  | 
			
				
				
					Регистрация: 03.02.2020 
					
					
					
						Сообщений: 2,777
					 
					
					
			
		
 
		 
		
			 | 
		 
		 
		
	 | 
 
	
	
	
		
		
		
		
		
	
 
	| 
		
			Сообщение от riaron
			
		
	 | 
 
	
		хочу чтобы 
сначала var sql3='SELECT `id` FROM `orders`'; по промису 
потом 
var sql2='SELECT `orderid` FROM `orders` GROUP BY `orderid` limit start,end';
	 | 
 
	
 
 Только что заметил, что вы изменили запросы, и теперь sql2 должен выполняться после sql3, т.к. использует start,end, которые вычисляются после sql3. 
Ну тут же совсем другая логика. И Promise.all совсем не нужен.
 
var sql3='SELECT `id` FROM `orders`';
 
pquery (connection, sql3, []).then( resulta => {
     length=resulta.length;
     if(start<0){start=0;}
     if(end>(length-req.params.page*10)%10){end=length;}
     var sql2='SELECT `orderid` FROM `orders` GROUP BY  `orderid` limit '+ start +', '+ end';
      return  pquery (connection, sql2, []).then( result => {
            orderids=result;
     })
})
 
		
	
		
		
		
		
		
		
		
						  
				
				Последний раз редактировалось voraa, 19.10.2020 в 09:33.
				
				
			
		
		
	
		
		
	
	
	 | 
 
 
	 
		 | 
 
 
	
	
	
		
	
		
		
		
			
			 
			
				19.10.2020, 20:16
			
			
			
		  
	 | 
 
	
		
		
		
			
			| 
			
				
				
				 Аспирант 
				
				
				
				
	
 
 
 
			 | 
			  | 
			
				
				
					Регистрация: 16.08.2020 
					
					
					
						Сообщений: 53
					 
					
					
			
		
 
		 
		
			 | 
		 
		 
		
	 | 
 
	
	
	
		
		
		
		
		так не работает 
ничего не выдает  т.е. не входи в цикл j
 
app.get('/orders/:page', (req, res) => {
    var connection = getMySQLConnection();
    var smartphone=[];
    var allsmartphone=[];
    var smartphoneList=[];
    var allprice=0;
    var a;
    var b;
    var length;
	var orderids;
	var start;
	var end;
	var allprice;
	start=(req.params.page-1)*10;
	end=req.params.page*10;
	var sql2='SELECT `orderid` FROM `orders` GROUP BY  `orderid`';
	var sql1 ='SELECT `id`,`prod`,`name`,`photo`,`price`,`sale`,`remote_adr`,`quantity` FROM `orders` WHERE orderid=?';
	connection.connect(function(err) {
		if(err){
			console.log(err);
		}else{
				connection.query(sql2, [], function (err, resulta) {        
			length=resulta.length;
			if(start<0){start=0;}
			if(end>(length-req.params.page*10)%10){end=length;}
				orderids=resulta;
	
	for(var j=0;j<orderids.length;j++) {
	    smartphone=[];
			connection.query(sql1, [orderids[j]], function (err, results) {
				if(err){
					console.log(err);
				}else{
					for (var i = 0; i < results.length; i++) {
						// Create the object to save the data.
						b = results[i].price - results[i].price * results[i].sale / 100;
						a = b * results[i].quantity;
						allprice += a;
						var smart = {
							'id': results[i].id,
							'prod': results[i].prod,
							'name': results[i].name,
							'photo': results[i].photo,
							'sale': results[i].sale,
							'price': results[i].price,
							'tsale': b,
							'vsego': a,
							'quantity': results[i].quantity,
							'allprice': allprice,
						};
						smartphone.push(smart);
						console.log(smartphone);
										console.log(orderids);
	
					}
				}
			});
		
					//allsmartphone[orderids[j]].push(smartphone);
 
	};
					
			//res.render('orders', {"smartphoneList": smartphoneList,"allsmartphone": allsmartphone,'orderids':orderids});
		});		
};
});
});
 
		
	
		
		
		
		
		
		
		
						  
				
				Последний раз редактировалось riaron, 19.10.2020 в 23:55.
				
				
			
		
		
	
		
		
	
	
	 | 
 
 
	 
		 | 
 
 
 
 |  
  |