【问题标题】:Nodejs read array after iteration迭代后Nodejs读取数组
【发布时间】:2016-12-27 19:24:09
【问题描述】:

我是 nodejs 和异步语言的新手。我正在尝试从 sqlite3 读取数据并将它们推送到数组中。最后打印数组。 我已成功将数据推送到数组中,并且可以从迭代内部记录它们。但是当我尝试从外部读取数组时,看起来数组是空的。

var express = require('express');
var app = express();

var sqlite3 = require('sqlite3').verbose();
var db = new sqlite3.Database('testDb');

app.use(express.static(__dirname + '/public'));

db.serialize(function() {
  var infoCOllection = [];

  db.each("SELECT rowid AS id, info FROM lorem", function(err, row) {

    infoCOllection.push(row.id + ": " + row.info);
  });
        console.log(infoCOllection);
  });

db.close();

app.listen(3000);
console.log('sever is run on port 3000');

我阅读了许多关于回调和 nodejs 的示例和解释,但不了解其结构及其与我的代码的关系。任何人都可以帮助我解决我的代码问题。 提前致谢

【问题讨论】:

    标签: javascript arrays node.js sqlite


    【解决方案1】:

    来自docs

    Database#each(sql, [param, ...], [callback], [complete])

    这样完成db.each就可以得到array

    db.each("SELECT rowid AS id, info FROM lorem", function(err, row) {
        infoCOllection.push(row.id + ": " + row.info);
    }, function(err, rows){ //callback for completion of .each method
          console.log(infoCOllection); //you can have your array printed here
    });
    

    【讨论】:

      【解决方案2】:

      非常感谢 Jyothi 的回答和链接。现在一切对我来说都很清楚。 :) 我刚刚尝试了另一种检索所有行的方法,如下所示:

          db.all("SELECT rowid AS id, info FROM lorem",function(err, rows) {
              rows.forEach(function(row) {
                  infoCOllection.push(row.id + ": " + row.info);
              });
              console.log(infoCOllection);
        });
      

      干杯

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2013-08-19
        • 2019-11-17
        • 1970-01-01
        • 2020-03-28
        • 2020-04-21
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多