如何在Node-postgres中使用多个查询?

缺口

因此,我不确定node-pg的工作方式,但我一直在尝试通过四处浏览,尝试和阅读文档来使其工作。我想要实现的是能够在不同的时间发送多个查询,但是如果我敢于编码第二个,则在我发送第一个查询之后它总是会引发错误。这个问题已经在网上多次提出,但是我看不到任何帮助答案。我可以在必要时使用池化(也有问题)。

现在有效:(在heroku上,因此我必须使用process.env.DATABASE_URL)

const { Client } = require('pg');

const client = new Client({
connectionString: process.env.DATABASE_URL,
ssl: {
rejectUnauthorized: false
  }
});
client.connect()

client

.query('SELECT * FROM test WHERE....')
.then(results => {
console.log(results);
}

.catch(err => {
console.log(err.stack)
 })

我正在尝试做的是:

const { Client } = require('pg');

const client = new Client({
connectionString: process.env.DATABASE_URL,
ssl: {
rejectUnauthorized: false
  }
});
client.connect()

client

.query('SELECT * FROM test1 WHERE....')
.then(results => {
console.log("FIRST RESULTS: "results);
}

.catch(err => {
console.log(err.stack)
 })

.query('SELECT * FROM test2 WHERE....')
.then(results => {
console.log("SECOND RESULTS: "results);
}

.catch(err => {
console.log(err.stack)
 })
一定的表现

当您.query返回Promise,Promise中没有.query方法-您只能使用call.then.catchPromise上(或.finally有时)对其进行操作。

如果您想在旧版本完成后再进行新查询,请client.query在内调用.then

client
  .query('SELECT * FROM test1 WHERE....')
  .then(results => {
      console.log("FIRST RESULTS: " + results);
    })
    .then(() => client.query('SELECT * FROM test2 WHERE....'))
    .then(results => {
      console.log("SECOND RESULTS: " + results);
    })
    .catch(err => {
      // better to handle errors at the end, probably
      console.log(err.stack)
    })

如果第二个查询取决于第一个查询的结果,请考虑使用一个async函数代替,以使代码更平整和更具可读性。

如果第二个查询依赖于第一个查询,请考虑Promise.all改用,这样就可以立即进行两个查询,而不必等待第一个查询先完成。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

Postgres如何在查询中使用点类型

如何在postgres中使用dblink编写这样的查询?

如何在 postgres 中使用此查询中的函数计数

Postgres:如何在子查询中使用字段的值

如何在heroku postgres查询中使用LOCAL VARIABLES?

如何在 TypeORM postgres 中使用 leftJoinAndSelect 查询?

如何在AR中使用多个联接进行查询

如何在 Css 类中使用多个媒体查询?

如何在Pentaho Report Designer中使用多个查询?

如何在Oracle C#中使用多个选择查询

Elasticsearch - 如何在查询中使用多个分析器

如何在MySql中使用sequelize运行多个原始查询?

如何在 SQL 查询中使用 AND 搜索多个术语?

如何在Firebase Android中使用多个WhereIn查询?

如何在SQL查询中使用多个参数

如何在Laravel查询中使用多个OR,AND条件

我如何在CodeIgniter中使用多个类似查询

如何在子查询中使用多个 sum 和 group by?

如何在Codeigniter中使用多个选择查询?

如何在查询中使用LIKE查找多个单词?

如何在Java XPath查询中使用name()和/或node()?

如何使用Postgres在子查询中使用left函数

如何在其他查询的变量中使用Hive查询结果(多个)

如果查询具有多个输入,如何在Hyperledger composer logic.js中使用查询?

如何在带有IN子句和子查询的查询中使用多个LIKE语句?

如何在node.js中使用.then()?

如何在Postgres查询中使用字符串连接regclass名称

Knex / Bookshelf:如何在所有查询/命令中使用Postgres模式

如何在Postgres查询窗口中使用参数测试我的即席SQL