【问题标题】:Storing results of SQL Select query in a var node js将 SQL Select 查询的结果存储在 var node js 中
【发布时间】:2020-08-16 17:21:15
【问题描述】:

我正在寻找一种方法来存储此选择查询的结果,例如游戏的“排名”图表,但我不确定我遇到的是异步问题还是数据类型问题,或者完全不同的东西。有什么想法吗?

var ranksVar = [];

db.all("select * from user", function(err, rows){
  if(err) {
    throw err;
  } else {
    setValue(rows);
  }
});

function setValue(value) {
  ranksVar = value;
  console.log(ranksVar);
}

【问题讨论】:

  • 错误是什么?
  • @Jesse 请提供有关所用模块的更多详细信息(db 背后的模块是什么)、错误或详细目标:D。我们无法真正准确地帮助您了解更多详细信息^^。
  • @RahulSingh 没有错误只显示为“[Object, object]”
  • @DataHearth db 只是到我的 sqlite 数据库的连接 ``` const dbconnect =require('./dbconnect.js') ```
  • @Jesse 所以你得到了所需的 Objeft。只需执行 console.log(JSON.stringify(ranksVar)) 即可查看 rankVar 值。 JSON。 stringify() 方法将 JavaScript 对象或值转换为 JSON 字符串。

标签: sql node.js sqlite


【解决方案1】:

我发现了一篇关于在 NodeJS 中使用 SQLite 的有用帖子,它为您提供了了解如何使用它所需的基本示例。这是:SQLite NodeJS

在您的情况下,请查看data query 部分。

这里是示例代码:

const sqlite3 = require('sqlite3').verbose();

// open the database
let db = new sqlite3.Database('./db/chinook.db');

let sql = `SELECT DISTINCT Name name FROM playlists
           ORDER BY name`;

db.all(sql, [], (err, rows) => {
  if (err) {
    throw err;
  }
  rows.forEach((row) => {
    console.log(row.name);
  });
});

// close the database connection
db.close();

如您所见,rows 变量(我猜)是由模块创建的特殊类型。要从中获取所有数据,您可能需要对其进行迭代并将其推送到您的数组变量中。

干杯?!

【讨论】:

    【解决方案2】:

    我发现了这个问题。这是一个数据类型/异步问题,我试图为一个未定义的数组打印一个字符串。

    返回一个循环并使用 JSON.stringify 方法正确显示数组对象。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-03-13
      • 1970-01-01
      • 1970-01-01
      • 2021-11-09
      相关资源
      最近更新 更多