Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/42.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js 从pg promise查询中获取结果_Node.js_Promise_Pg Promise - Fatal编程技术网

Node.js 从pg promise查询中获取结果

Node.js 从pg promise查询中获取结果,node.js,promise,pg-promise,Node.js,Promise,Pg Promise,我正在与pg promise合作一个节点项目。我需要对查询结果履行承诺,但我无法得到结果 get2 : function(id) { var qrm = pgp.queryResult; PG.db.any('SELECT * FROM referentiel_rd_client WHERE id=\'' + id + '\'') .then(data => { console.log('got query results');

我正在与pg promise合作一个节点项目。我需要对查询结果履行承诺,但我无法得到结果

get2 : function(id) {
    var qrm = pgp.queryResult;
    PG.db.any('SELECT * FROM referentiel_rd_client WHERE id=\'' + id + '\'')
        .then(data => {
            console.log('got query results');
            resolve(data);
        })
       .catch(error => {
           // error; 
        });
但是另一个承诺(应该收到数据)永远不会得到任何东西。。。 如何从查询中获取结果?(我可以将它们记录到控制台上)。

  • 不要做出不必要的承诺,这是一个错误

  • 如果要对结果进行预处理,最后只需返回结果, 承诺就是这样起作用的:

    get2: (id) => {
        return PG.db.any('SELECT * FROM referentiel_rd_client WHERE id=$1', id)
            .then(data => {
                console.log('got query results:', data);
                return data;
            });
    

  • 切勿手动格式化查询,请使用库附带的查询格式化引擎,否则最终会中断查询

然后你会这样称呼它:

get2(123)
    .then(data => {
        // success
    })
    .catch(error => {
        // error
    });

您不从函数-do
return PG.db.any中返回任何内容…
并且在
then()中使用
返回数据嗯,我添加了
return
,但是其他承诺仍然没有得到任何结果。您可以添加负责调用
get2
函数的代码吗?
返回新承诺((解析,拒绝)=>{M.get2(id,(err,data)=>{if(err){return reject(err);}console.log('got success on promise with'+data);resolve(data);});});
这并不能回答问题。如何将结果作为一个不同的变量返回?您仍然无法从
内部返回,然后返回
!因此这作为回答是无用的。此设计假设的是全局变量或缓存,您可以异步更新,但GraphQL解析器如何,您需要返回离散值?如果你想做FP,你必须返回没有副作用的值,那该怎么办?@BenjaminR我回答了这个问题,这个问题与任何不同的变量无关,而不是返回一个承诺。不能从承诺内部返回?你可以,你可以,这解决了这个家伙的问题。亲爱的伙计,我道歉,这是我的错误,我错了回答这个问题。我会做一个名义上的编辑来删除我的否决票。我想我很沮丧,因为存在一个(cough Concurrency cough)缺口,您只能返回另一个
Promise
然后(…)
返回一个
Promise
。对结果进行后期处理很酷,但实际代码很混乱,您可能只想保存值(不是承诺!)到一个变量。从内部返回
然后(…)
会给出一个值,该值需要另一个
然后(…)
调用才能无限访问。我的问题是,它如何停止&在何处停止?如果,当它准备好时,我只需要承诺之外的值呢?例如,去处理这个问题吧,非常简单。