从node.js到浏览器获取大查询结果

get bigquery results from node.js to browser

本文关键字:查询 结果 获取 浏览器 node js      更新时间:2023-09-26

我正在运行一个谷歌计算引擎与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,这个错误也是如此。你应该创建一个路由并把它放在那里。