繁体   English   中英

postgres + node.js查询合并

[英]postgres +node.js query combine

我是这个node.js和postgres的新手。我正在执行2个query(选择),我必须将这2个查询输出组合成一个结果。 另外,我必须使第一个结果首先出现,然后出现第二个查询。我有以下代码,但我没有达到要求。 我也不确定我的代码是否正确..如果有的话,建议其他想法..

我的代码:

  client.query("select * from tn_village where level3 ILIKE '%"+villagename+"%' OR level4 ILIKE '%"+villagename+"%' OR level5 ILIKE '%"+villagename+"%' OR level6 ILIKE '%"+villagename+"%' OR level7 ILIKE '%"+villagename+"%' OR level8 ILIKE '%"+villagename+"%' OR level9 ILIKE '%"+villagename+"%'",function(err,result)
    {
    client.query("select * from tn_village where level3 ILIKE '%"+village+"%' OR level4 ILIKE '%"+village+"%' OR level5 ILIKE '%"+village+"%' OR level6 ILIKE '%"+village+"%' OR level7 ILIKE '%"+village+"%' OR level8 ILIKE '%"+village+"%' OR level9 ILIKE '%"+village+"%'" ,function(err,result1)
    {      
    res.send(result1);
    });
    });

我如何将result和result1合并到一个输出中。帮助我解决这个问题。

编辑:

client.query("select * from tn_village where level3 ILIKE '%"+villagename+"%' OR level4 ILIKE '%"+villagename+"%' OR level5 ILIKE '%"+villagename+"%' OR level6 ILIKE '%"+villagename+"%' OR level7 ILIKE '%"+villagename+"%' OR level8 ILIKE '%"+villagename+"%' OR level9 ILIKE '%"+villagename+"%' ",function(err,result)
{
client.query("select * from tn_village where level3 ILIKE '%"+village+"%' OR level4 ILIKE '%"+village+"%' OR level5 ILIKE '%"+village+"%' OR level6 ILIKE '%"+village+"%' OR level7 ILIKE '%"+village+"%' OR level8 ILIKE '%"+village+"%' OR level9 ILIKE '%"+village+"%'" ,function(err,result1)
{ 
var ret = {
            result: result,----------->if i put result1 here only the 2nd query output is showing. If i put result only 1st query output is shown..
            result1: result1
        }    


res.send(ret); 
//res.send(result1);      
});
}); 
});

我也想让我怀疑,您的代码是否将首先显示第一查询的输出,然后显示第二查询的输出?

好吧,只需按照您的布局方式进行即可(尽管我甚至希望在节点中使用Promise来聚合多个异步调用):

 client.query("select ...",function(err,result) {
    client.query("select ..." ,function(err,result1) {  
        var ret = {
            result: result,
            result1: result1
        }
        res.send(ret);
    });
 });

这是我想到的最简单的示例,它向您展示了这应该是多么容易。 现在,例如,如果您正在考虑将result和result1进行某种形式的循环,以将它们组合/合并在一起,等等,或者如果您想将两个数组连接成一个等,那么您的问题并不清楚,但是很容易做到。

让我知道是否可以澄清。 本质上,“结果”的值在内部回调中仍然对您可用,因此您可以在res.send中使用它。

PS-不一定需要嵌套的嵌套调用有点麻烦,promise或其他回调聚合器在这里会有所帮助。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM