2017-05-21 49 views
0

当我运行这个函数时,它返回时返回null,因为我在mysql查询中有返回值,我该如何解决这个问题?功能里面的javascript mysql

function CheckStorage(Host, Slots, SSLocation) { 
    connection.query("SELECT * FROM `machines` WHERE `shost` LIKE '" + Host + "' AND `location` LIKE '" + SSLocation + "' AND `slotsa` >= " + Slots + "", function(err, rows, fields) { 
     if(rows[0]) { 
      console.log(rows[0]["ip"]); 
      return rows[0]["ip"]; 
     } else { 
      return false; 
     } 
    }); 
} 
+0

该函数是async ..回调是答案。 –

+1

可能的重复[如何返回来自异步调用的响应?](http://stackoverflow.com/questions/14220321/how-do-i-return-the-response-from-an-asynchronous-call) –

回答

0

connection.query是一个异步函数,所以CheckStorage在connection.query完成之前返回。您需要将处理查询结果的回调函数传递给CheckStorage,然后在查询结束时调用该函数。

function CheckStorage(Host, Slots, SSLocation, callback) { 
    connection.query("SELECT * FROM `machines` WHERE `shost` LIKE '" + Host + "' AND `location` LIKE '" + SSLocation + "' AND `slotsa` >= " + Slots + "", function(err, rows, fields) { 
     if(rows[0]) { 
      console.log(rows[0]["ip"]); 
      if (typeof callback == "function") { 
       callback(rows[0]["ip"]); 
      } 
     } 
    }); 
}