postgres + node.js查询组合

时间:2013-12-13 05:48:55

标签: node.js postgresql-9.1

我是这个node.js和postgres的新手。我正在执行2个查询(选择),我必须将这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);
    });
    });

如何将结果和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);      
});
}); 
});

此外,我希望我怀疑,您的代码是否会首先显示第一个查询的输出,然后是第二个查询输出?

1 个答案:

答案 0 :(得分:1)

好吧,只需按照你的布局方式(尽管我甚至在节点中更喜欢承诺聚合多个异步调用):

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

这是我能想到的最简单的例子,向您展示这应该是多么容易。现在,如果您正在考虑某种循环结果和result1将它们组合在一起等,或者如果您想将两个数组连接成一个等等,那么所有这些都不是你的问题所清楚但是很容易做到。

如果这完全澄清,请告诉我。本质上,“结果”的值仍然可以在内部回调中使用,因此您可以在res.send中使用它。

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