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