从node.js到浏览器获取大查询结果
get bigquery results from node.js to browser
我正在运行一个谷歌计算引擎与node.js ,但我测试使用codeanywhere。我能够在codeanywhere终端上运行一个bigquery请求,并获得结果显示在终端控制台上。
但是当我尝试从html页面做同样的事情时,我不能完全得到返回给用户/浏览器的结果。
我在codeanywhere上安装的唯一节点模块是firebase和googleapi。
我希望在服务器端运行bigquery调用,因为我想隐藏验证信息;否则,只需从javascript中运行bigquery API。
my test.js is:
'use strict';
var google = require('XXX/lib/googleapis');
var bigquery = google.bigquery('v2');
var authClient = new google.auth.JWT(
'XXX@XXX.iam.gserviceaccount.com',
'XXX.pem',
null, ['https://www.googleapis.com/auth/bigquery']);
var request = {
projectId: 'XXX',
//all: true,
auth: authClient
};
var list = bigquery.datasets.list(request, function(err, result) {
if (err) {
console.log(err);
} else {
console.log(result);
return result;
}
});
和我的HTML是:
<!DOCTYPE html>
<html lang = "en">
<head>
<title>Testing Server Call </title>
<script type = "text/javascript" src = "//ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js" ></script>
<script type = "text/javascript" >
$(function() {
$.ajax({
type: 'GET',
url: 'test.js'
success: function(data) {
console.log('yay');
console.log(data);
},
error: function(xhr, status, error) {
console.log('Error: ' + error.message);
}
});
});
</script>
</head>
<body>
hi there
</body>
</html>
我已经搜索和测试了过去几天,不知道我错过了什么。我总是遇到这样的错误:Error: require is not defined
,我找不到任何教程来帮助我完成这个步骤。提前感谢您的帮助
'use strict';
var http = require('http');
var google = require('XXX/lib/googleapis');
var bigquery = google.bigquery('v2');
var authClient = new google.auth.JWT(
'XXX@XXX.iam.gserviceaccount.com',
'XXX.pem',
null, ['https://www.googleapis.com/auth/bigquery']);
var request = {
projectId: 'XXX',
//all: true,
auth: authClient
};
var server = http.createServer(function(req, res){
var list = bigquery.datasets.list(request, function(err, result) {
if (err) {
console.log(err);
} else {
console.log(result);
response.end(result);
}
});
});
server.listen(8080, function(){});
在前端,你必须指定路由,你将发出请求
<!DOCTYPE html>
<html lang = "en">
<head>
<title>Testing Server Call </title>
<script type = "text/javascript" src = "//ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js" ></script>
<script type = "text/javascript" >
$(function() {
$.ajax({
type: 'GET',
url: 'http://localhost:8080/'
success: function(data) {
console.log('yay');
console.log(data);
},
error: function(xhr, status, error) {
console.log('Error: ' + error.message);
}
});
});
</script>
</head>
<body>
hi there
</body>
</html>
之后你必须运行命令行node test.js
这里你使用test.js作为url,它在客户端加载js。您不能在客户端使用require,这个错误也是如此。你应该创建一个路由并把它放在那里。
相关文章:
- 如何将这些查询结果放入表中
- 如何在下拉列表更改时自动填充mysql查询结果中的文本框值
- 将数据库中的超链接添加到查询结果
- 为什么我的文本框没有用查询结果更新
- 使用jquery显示mysql查询结果
- 如何使用 angularjs 以表格格式显示 parse.com 的查询结果
- Meteor:在模板接受Mongo查询结果之前修改它的最佳实践
- 未捕获的范围错误:WebSQL查询结果中的项索引超出范围错误
- 表单提交后保留数据库查询结果
- 需要循环遍历一系列mysql查询结果
- OrientDB:在服务器端函数中访问查询结果数据
- Firebase 删除查询结果
- MongoDB查询结果作为循环控制器
- j查询结果不显示,除非我按“后退”按钮
- J查询结果显示问题
- 为什么脚本 Db 查询结果对象不同
- 从包含的 php 文件刷新查询结果
- 实现我的 Javascript 函数到数据库查询结果
- 通过输入键(不起作用)或搜索按钮(工作)查询结果
- 从 JSON(db 查询结果)加载大型 javascript 数组而不会使页面崩溃