javascript - 如何从 JSON SQL SELECT 并动态分配给变量

标签 javascript mysql json node.js alasql

TL;DR - 我想从“test.json”(下面的示例)的格式进行 SQL,我想动态分配每个变量,以便根据条目的数量输出该数量(所以它看起来像下面的输出示例)

我把它放在一个名为“test.json”的单独文件中

{
    "12321534232354": {
        "server": "2343262364124",
        "time": "infinite",
        "reason": "not provided"
    },
    "155149108183695360": {
        "server": "2343262364124",
        "time": "infinite",
        "reason": "not provided"
    }
}

我正在使用 alasq 模块从这个文件中进行 SQL 选择,如下所示:

const alasql = require("alasql");
testfile = require("./test.json");
console.log(alasql("SELECT * FROM ? WHERE server='2343262364124'",[testfile]));

但是,这会返回 [] 而不是我选择的值。我的最终目标是能够选择一个特定的服务器并获取每个条目的第一行(在本例中为“12321534232354”,“155149108183695360”)以及“时间”和“原因”并将它们分配给变量/一个数组,取决于有多少。所以我可以 console.log 所有这些值

期望的结果: 例如:

“test.json”包含:

{
    "15432213213564": {
        "server": "45645645654645",
        "time": "infinite",
        "reason": "not provided"
    },
    "4567863243123": {
        "server": "45645645654645",
        "time": "infinite",
        "reason": "not provided"
    },
    "5763542345345": {
        "server": "45645645654645",
        "time": "20",
        "reason": "test"
    }
}

如果我查询服务器“45645645654645”,我希望输出为:(例如:根据这个例子)

the user is 12321534232354
the time is infinite
the reason is not provided

the user is 155149108183695360
the time is infinite
the reason is not provided

the user is 5763542345345
the time is 20
the reason is test

这就是为什么我认为我应该将用户、时间、原因动态分配给变量?

请让我知道我该怎么做,或者更好的代码示例。

谢谢。

最佳答案

您必须对从 json 文件加载的对象进行后处理。我构建了一个工作样本。我认为 alasql 无法处理该对象,因为它不是数组,实际上它是键值对字典,我的代码删除了键,并制作了一个值数组,然后我可以选择:

const alasql = require("alasql");
var testfile = require("./test.json");
//get array of values of the object loaded from file
var values =Object.values(testfile);
//select
console.log(alasql("SELECT * FROM ? WHERE server = \"45645645654645\"", [values]));

更新:使用 Object.values() 简化了它

我使用了 test.json 的以下内容:

{
    "15432213213564": {
        "server": "45645645654645",
        "time": "infinite",
        "reason": "not provided"
    },
    "4567863243123": {
        "server": "45645645654645",
        "time": "infinite",
        "reason": "not provided"
    },
    "5763542345345": {
        "server": "45645645654645",
        "time": "20",
        "reason": "test"
    }
}

enter image description here

关于javascript - 如何从 JSON SQL SELECT 并动态分配给变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48026797/

相关文章:

java - JSON : Array & Compare

javascript - 如何将数组中的日期字符串更新为mongoDB中的日期格式?

javascript - Highcharts : Json Array For ToolTip

php - SQL获取第一个ID的方法

c# - 将日期时间转换为 JSON 数据有困难

java - org.json.JSONException : No value for id - IMPOSSIBLE TO SOLVE

javascript - 如何使用 javascript 访问(编辑和阅读)与我共享的谷歌文档

javascript - 如何使用 jQuery 比较 tr 中的几个 td.text()

mysql - 如果存在则更新,否则插入(无唯一键)

javascript - HTML - 从 mysql 生成的选择框内的选项更改文本区域中的颜色