如何从数据库中获取 JSON 数据?

How to fetch JSON data from DB?

我准备了一个 JavaScript 可视化代码,可视化通过简单的 HTTP 服务器工作,因为所有必要的数据都在一个文件夹中。但是,如果需要从数据库(现在 JSON 文件)获取数据输入,我就无法使用它。

我已将以下示例数据(csv 文件)加载到 teradata 数据库中。

|x1. . . . . |y1. . . . .|z1. . . . . |x2. . . . . |y2. . . . .|z2. . . . . |
|-0.858927763|0.121607854|-0.067815693|-0.100387679|0.142522011|-0.085021698|
|0.759678102 |1.670849337|0.389506443 |-0.841098362|0.745253687| 0.07724956 |   
|1.617835159 |0.671663712|0.676541754 |-0.086900337|1.162505997| 0.822100957|
|1.878302821 |0.985942302|1.756579077 |-0.418153016|2.471764891| 0.234493023|

Sample Data

teradata 工具的文档指出,要访问数据,index.html代码必须使用消息处理程序:

$(window).on('message', handler)

并且可以使用以下方法在处理程序内部访问数据:

event.originalEvent.data

在我的本地服务器中,从 csv 获取数据的 JavaScript 代码如下:

<script>
    Plotly.d3.csv('3d-scatter.csv', function(err, rows){
  function unpack(rows, key) {
      return rows.map(function(row) 
      { return row[key]; });
  }
</script>

我只是想知道我应该使用什么代码来获取和转换 JSON 数据(以前是 '3d-scatter.csv',现在是数据库中的 JSON 数据)从 event.originalEvent.data 处理程序中提取。


我找到了包含数据的处理程序。

在'message'事件处理程序下:可以在此路径中找到数据(.handler.elem.visJson.data)

所以当我调用visJson.data时,控制台输出一个数组。

您可以使用浏览器Fetch APIfetch()全局函数可以从网络获取资源,返回一个Promise的HTTP响应。

这样使用:

fetch("http://host/endpoint.json")
  .then(res => res.json())
  .then(data => {
    // data is an array of object, 
    // iterate over it and create an in-memory CSV
    // or verify if Plotly.d3 can be fed directly this array
  })