Node.js 从pg promise查询中获取结果
我正在与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');
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
。对结果进行后期处理很酷,但实际代码很混乱,您可能只想保存值(不是承诺!)到一个变量。从内部返回然后(…)
会给出一个值,该值需要另一个然后(…)
调用才能无限访问。我的问题是,它如何停止&在何处停止?如果,当它准备好时,我只需要承诺之外的值呢?例如,去处理这个问题吧,非常简单。