sách gpt4 ai đã đi

d3.js, queue.js và node.js

In lại 作者:太空宇宙 更新时间:2023-11-03 21:58:34 28 4
mua khóa gpt4 Nike

我尝试在 NodeJS 中加载数据,然后将其传递给 ExpressJS 以在浏览器中呈现 d3 图表。

我知道我可以通过这种方式加载数据 - https://github.com/mbostock/queue

我有一个像这样的expressjs路由配置 -

    var d3 = require('d3')
,queue = require("queue-async")
;

router.get('/', handler1);

function handler1(req, res) {

queue()
.defer(d3.json, 'https://data.medicare.gov/resource/a8s4-5eya.json?$limit=50000&$$app_token=igGS35vW9GvDMmJUnmHju2MEH&$select=org_pac_id%20as%20source, org_pac_id%20as%20target,org_lgl_nm%20as%20description')
.defer(d3.json, 'https://data.medicare.gov/resource/a8s4-5eya.json?$limit=50000&$$app_token=igGS35vW9GvDMmJUnmHju2MEH&$select=org_pac_id%20as%20source, org_pac_id||pri_spec%20as%20target, pri_spec%20as%20description')
.defer(d3.json, 'https://data.medicare.gov/resource/a8s4-5eya.json?$limit=50000&$$app_token=igGS35vW9GvDMmJUnmHju2MEH&$select=org_pac_id||pri_spec%20as%20tsource, pri_spec%20as%20target, frst_nm%20as%20description')
.await(go);

function go(error, data,d2,d3){

data.concat(d2); data.concat(d3);

console.log(data);

res.render('index', { title: 'Group Practices', data });

}
}
module.exports = router;

但我收到浏览器错误,

XMLHttpRequest is not defined

ReferenceError: XMLHttpRequest is not defined
at d3_xhr (/Users/Admin/Public/GroupPractice/node_modules/d3/d3.js:1934:114)
at d3.json (/Users/Admin/Public/GroupPractice/node_modules/d3/d3.js:9533:12)
at pop (/Users/Admin/Public/GroupPractice/node_modules/queue-async/queue.js:24:14)
at Object.q.defer (/Users/Admin/Public/GroupPractice/node_modules/queue-async/queue.js:55:11)
at handler1 (/Users/Admin/Public/GroupPractice/routes/index.js:18:5)
at Layer.handle [as handle_request] (/Users/Admin/Public/GroupPractice/node_modules/express/lib/router/layer.js:95:5)
at next (/Users/Admin/Public/GroupPractice/node_modules/express/lib/router/route.js:131:13)
at Route.dispatch (/Users/Admin/Public/GroupPractice/node_modules/express/lib/router/route.js:112:3)
at Layer.handle [as handle_request] (/Users/Admin/Public/GroupPractice/node_modules/express/lib/router/layer.js:95:5)
at /Users/Admin/Public/GroupPractice/node_modules/express/lib/router/index.js:277:22

如何使用 d3 和队列来预加载此 RESTful 数据?

1 Câu trả lời

d3 库是一个客户端库。这意味着它必须在浏览器中使用,而不是在服务器端应用程序中使用。

如果您想获取数据并在 Express 应用程序中连接它们,您可以使用异步请求,如下所述:

var request = require('request');
var async = require('async');

function createRequestTask(url) {
return function(callback) {
request({
url: url,
json: true
}, function (err, response, body) {
callback(err, body);
});
};
}

async.parallel([
// URL #1
createRequestTask('https://data.medicare.gov/resource/a8s4-5eya.json?$limit=50000&$$app_token=igGS35vW9GvDMmJUnmHju2MEH&$select=org_pac_id%20as%20source, org_pac_id%20as%20target,org_lgl_nm%20as%20description'),
// URL #2
createRequestTask('https://data.medicare.gov/resource/a8s4-5eya.json?$limit=50000&$$app_token=igGS35vW9GvDMmJUnmHju2MEH&$select=org_pac_id%20as%20source, org_pac_id%20as%20target,org_lgl_nm%20as%20description'),
(...)
],
function(err, results) {
// Result contains an array with each request result
});

请求将并行执行,当所有请求完成时,调用最终回调。 results 变量将包含一个包含所有响应内容的数组。

然后,您可以利用此数组来构建您希望 Express 路由返回的对象。

这是您的代码的更新:

router.get('/', handler1);

function handler1(req, res) {
async.parallel([
// URL #1
createRequestTask('https://data.medicare.gov/...'),
// URL #2
createRequestTask('https://data.medicare.gov/...'),
(...)
],
function(err, results) {
res.render('index', { title: 'Group Practices', results });
});
}

module.exports = router;

希望对你有帮助蒂埃里

关于node.js - d3.js、queue.js 和 node.js,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33815684/

28 4 0
Bài viết được đề xuất: node.js - Node 和 npm 的问题
Bài viết được đề xuất: OpenCV C++ 将字节数组转换为 Mat
Bài viết được đề xuất: OpenCV : What is the real performance difference between continuous and non-continuous matrices?
Bài viết được đề xuất: Node.js 同步返回多个异步yield结果
太空宇宙
Hồ sơ cá nhân

Tôi là một lập trình viên xuất sắc, rất giỏi!

Nhận phiếu giảm giá Didi Taxi miễn phí
Mã giảm giá Didi Taxi
Giấy chứng nhận ICP Bắc Kinh số 000000
Hợp tác quảng cáo: 1813099741@qq.com 6ren.com