首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >循环中的查询在节点-firebird中不工作。

循环中的查询在节点-firebird中不工作。
EN

Stack Overflow用户
提问于 2019-07-19 21:26:13
回答 1查看 534关注 0票数 1

我在一个循环中执行几个select查询。

简化了复制示例,我得到了以下代码:

代码语言:javascript
复制
var Firebird = require('node-firebird');

Firebird.attach({database: 'TEST'}, (err, db) => {
  for (var i = 0; i < 3; i++) {
    db.query('select count(0) from rdb$database', (err, result) => {
      console.log(result);
      //db.detach();
    })
  }
  db.detach();
})

这段代码没有输出任何内容。

但是,如果我将循环的迭代减少到2,我将得到如下结果:

代码语言:javascript
复制
[{COUNT: 1}]
[{COUNT: 1}]

为什么select工作两次,但第三次或更多次停止工作?

实际上,我需要在循环中执行选择、插入和其他操作。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-07-20 07:03:04

在查询语句停止执行之前调用db.detach,因为这些语句是异步调用的。我不知道为什么这两次迭代都能工作,我希望它永远不会起作用。

您可以使用异步/等待,结合按照顺序调用异步代码的承诺,如下所示:

代码语言:javascript
复制
var Firebird = require('node-firebird');

Firebird.attach({database: 'TEST'}, async (err, db) => {
  for (var i = 0; i < 3; i++) {
    await new Promise(resolve => {
        db.query('select count(0) from rdb$database', (err, result) => {
            console.log(result);
            resolve();
        });
    });
  }
  db.detach();
})
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57119750

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档