我目前有谷歌云计算引擎运行nodejs连接到谷歌云SQL女巫从MySQL工作台获取数据。这是我用' node'
运行的server.js文件var gcloud = require("gcloud");
var express = require("express");
var http = require('http');
var mysql = require("mysql");
var connection = mysql.createConnection({
port: "3306",
host : "173.194.87.72",
user : "root",
password : "****",
database : "scripto_5_k"
});
var app = express();
/* Connection to Database */
connection.connect(function(error){
if(error)
{
console.log("Problem with MySQL "+error);
}
else
{
console.log("Connected with Database ");
}
});
app.set('port', process.env.PORT || 3000);
app.get('/',function(req,res){
res.send('hello index');
});
app.get('/load',function(req,res){
console.log("/load hit");
connection.query("SELECT * from user",function(err,rows){
if(err)
{
console.log("Problem with MySQL"+err);
}
else
{
res.end(JSON.stringify(rows));
}
});
});
/*start the server */
app.listen(3000,function(){
console.log("its started on PORT %s", app.settings.port);
});
这应该占用用户表中的所有数据,并在使用/ load时将其放入JSON。但我不能让Postman显示数据。这是我一直在使用的地址
http://130.211.90.249:3000/load
地址来自Google云端口是我在server.js文件中设置的端口,而/ load应该使用我上面写的函数。
为什么我没有看到这个输入的结果?我正在使用节点server.js'运行服务器。在我的VM实例上,它表示我已成功连接。
非常感谢任何帮助。
修改1
这是我运行server.js时我的VM的样子
my_user_name@nodejs-2:~$ node server.js
its started on PORT 3000
Connected with Database
没有错误,但在Postman我得到了#34;无法得到任何回复"当我输入上面给出的地址时。
修改2
我是否需要在运行的server.js文件中创建一个http服务器,以便Postman中的请求可以访问JSON对象?
编辑3
如果我按照谷歌云虚拟机的IP地址,它会转到Bitnami的默认页面,但会告诉我节点js正在云中运行。我是否需要删除此默认页面,或者只是在服务器运行时离开?
这是一个链接http://130.211.90.249/
答案 0 :(得分:1)
由于应用程序正在您的代码中侦听端口3000,因此您需要创建防火墙规则以使该端口可从外部使用。
从该项目的开发者控制台,转到网络并查看默认网络的详细信息。创建规则以允许端口3000上的流量。