[英]How do I set Algolia to not return any results if the query is blank?
[英]How do I return the results of .query in a class
我正在使用coffee脚本在NodeJS中编写应用程序,并且需要将由类进行的sql查询的结果存储到该类可以返回的变量中。
我有类似的东西
class dataBase
mySQL = require('mysql');
connection = null;
queryResults = null;
constructor:(host,user,password,database)->
connection = mySQL.createConnection({
host : "#{host}",
user : "#{user}",
password : "#{password}",
database : "#{database}",
});
connection.connect;
然后在该类的后面,我有一个称为查询的函数,该函数查询数据库并返回结果。
query:(input) ->
connection.query("#{input}",(err,result)->
queryResults = result;
);
return queryResults;
问题是因为connection.query中的函数始终异步运行,所以return queryResults始终返回null。
无论如何,我可以解决这个问题,以便如果我在类之外进行其他操作,query()将返回结果的值:
myDatabase = new dataBase("fee","fi","foo","fum");
users = myDatabase.query("SELECT * FROM users");
在“异步”编程模型(AP)中,提供了一种回调,其中使用了查询结果。 就像是:
myDatabase = new dataBase("fee","fi","foo","fum");
myDatabase.query("SELECT * FROM users",function(err,result){
// check for error and do something with result
});
AP的整个想法是,事情可以而不是在常规程序流程之外发生,而不是等待,例如,当数据可用时,因此,必须使用它们在可用时产生的任何结果。
这就是AP回调不返回值的原因。 他们没有可以返回的背景。
想想它就像通过邮局发送一封经过认证的信件。 您将信件交给邮递员,而不是等到信件寄出并收到收据后再去做其他事情,留下指示,一旦收据到手,就应将其寄到您的房子或应该打电话给你。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.