Обратный вызов INSERT запроса Node.js не работает должным образом - PullRequest
0 голосов
/ 25 сентября 2019

Небольшая проблема при использовании POST и добавлении INSERT.Работает, как показано ниже, но вы хотите использовать коллбол после вставки данных.В данный момент база данных обновляется.(хорошо), но не могу использовать обратный вызов - я ожидаю, что это будет чуть ниже ошибки броска.Таким образом, вы можете использовать result.insertId.Любые мысли приветствуются?

router.post('/group/:id', function(req, res) {

	var idToken = req.params.id;
	
	admin.auth().verifyIdToken(idToken).then(function(decodedToken) {
    	    
			var userID = decodedToken.uid;
			var name = encrypt(req.body.group);
		
			getID(userID, function(result){
				
				var ID = result;
				var post  = {ID:ID, name:name};

				db.query('INSERT INTO cu_groups SET ?', post, function (error, results, fields) {
				if (error)throw error;

        //*** when I add response here get 502 bad gateway error.
				
				});
	
				res.sendStatus(200);
							
			}); // depends on getID
				
  // admin.auth cat
  }).catch(function(error) {
  res.sendStatus(error);
  });	
	
});

Ответы [ 2 ]

0 голосов
/ 26 сентября 2019

Рабочий код ниже большое спасибо Saurabh Mistry.Я удалил пост SET и добавил поля таблицы и значения Explicity.

router.post('/group/:id', function(req, res) {

	var idToken = req.params.id;
	
	admin.auth().verifyIdToken(idToken).then(function(decodedToken) {
    	    
			var userID = decodedToken.uid;
			var name = encrypt(req.body.group);
		
			getID(userID, function(result){
				
				    var ID = result;
			
				    // query
					let query = "INSERT INTO cu_groups (ID, name) VALUES('" + ID + "','" + name + "')";
					
					// execute query
					db.query(query,  (error, result) => {
																			
																						
                        if(error){
                           return res.status(500).send(error);	
                        }
                        if(!error && result ){
                            return res.send(result);
                        }
						
					

                    });
				
	
			}); // depends on getID
				
  // admin.auth cat
  }).catch(function(error) {
  return res.status(500).send(error);	
  });	
	
});
0 голосов
/ 25 сентября 2019

попробуйте следующим образом:

router.post('/group/:id', function(req, res) {

        var idToken = req.params.id;
        admin.auth().verifyIdToken(idToken).then(function(decodedToken) {

                var userID = decodedToken.uid;
                var name = encrypt(req.body.group);

                getID(userID, function(result){

                    var ID = result;
                    var post  = {ID:ID, name:name};

                    db.query('INSERT INTO cu_groups SET ?', post, function (error, results, fields) {
                        if(error){
                            return res.status(500).send(error);
                        }
                        if(!error && results){
                            return res.status(200).send(results);
                        }

                    });

                }); 

      }).catch(function(error) {
          return res.status(500).send(error);
      });   

  });

, если вы хотите использовать обратный вызов, создайте отдельную функцию, например:

var insertData = function(query,data,callback){
          db.query(query, data, function (error, results, fields) {
               if(error){callback(error,null);}
               if(!error && results){callback(null,results);}
          });
});

, и вызовите этот способ внутри getID:

     getID(userID, function(result){

                var ID = result;
                var post  = {ID:ID, name:name};

                insertData('INSERT INTO cu_groups SET ?', post, function (error,data){
                    if(error){
                        return res.status(500).send(error);
                    }
                    if(data){
                        return res.status(200).send(data);
                    }
                });

            }); 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...